经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Nginx » 查看文章
超实用的Nginx常见配置合集分享
来源:jb51  时间:2022/7/19 13:02:46  对本文有异议

封禁 IP

通过 deny 可以封禁指定 IP

  1. http {
  2. # ....
  3. # 封禁IP
  4. deny 192.168.4.3;
  5. deny 31.42.145.0/24;
  6. deny 51.12.35.0/24;
  7. }

仅开放内网

需要先禁止 192.168.1.1

开放其他内网网段,然后禁止其他所有 IP

  1. location / {
  2. # block one workstation
  3. deny 192.168.1.1;
  4. # allow anyone in 192.168.1.0/24
  5. allow 192.168.1.0/24;
  6. # drop rest of the world
  7. deny all;
  8. }

负载均衡

需要在 nginx.conf 中配置转发服务器信息

权重: weight=1,权重如果分配的值越大,权重越高

最大连接数: max_fails=3,最多连接失败次数为3次

连接失败时间: fail_timeout=20s,每次连接失败的时间

在站点配置 default.conf 中开启负载均衡

  1. # nginx.conf中配置转发服务器信息
  2. upstream web {
  3. server 192.168.37.2 weight=1 max_fails=3 fail_timeout=20s;
  4. server 192.168.37.3 weight=1 max_fails=3 fail_timeout=20s;
  5. }
  6.  
  7. # default.conf中开启负载均衡
  8. location / {
  9. proxy_pass http://web/;
  10. }

列出文件列表

有时候服务器作为资源服务器,给用户提供下载资源使用

需要将服务上的文件以目录形式列出来

可以通过配置 autoindex on 允许列出目录,启用目录流量

可以通过 autoindex_exact_size off 显示出文件的确切大小,单位是 bytes

可以通过 autoindex_localtime on 显示的文件时间为文件的服务器时间

  1. location / {
  2. autoindex on;
  3. autoindex_exact_size on;
  4. autoindex_localtime on;
  5. }

路由转发

有时候用户通过路由访问服务器的资源,其实你的资源在另一个文件夹下面

可以使用 alias 命令,将用户请求进行转发

  1. # nginx服务器
  2. location /static {
  3. alias /public;
  4. }
  5. # window服务器
  6. location ^~ /static {
  7. alias "D:\\public\\静态资源";
  8. }

开启 gzip 压缩

gzip 压缩是一种提升访问速度的优化方向,可以大大提高

  1. http {
  2. # 开启gzip
  3. gzip on;
  4.  
  5. # 是否在http header中添加Vary: Accept-Encoding,建议开启
  6. gzip_vary on;
  7.  
  8. # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
  9. gzip_min_length 1k;
  10.  
  11. gzip_proxied any;
  12.  
  13. # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
  14. gzip_comp_level 6;
  15.  
  16. # 设置压缩所需要的缓冲区大小
  17. gzip_buffers 16 8k;
  18.  
  19. # 设置gzip的版本
  20. gzip_http_version 1.1;
  21.  
  22. # 进行压缩的文件类型。javascript有多种形式,后面的图片压缩不需要的可以自行删除
  23. gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  24. }

解决跨域

  1. server {
  2. location / {
  3. #允许跨域请求的域,*代表所有
  4. add_header 'Access-Control-Allow-Origin' *;
  5. #允许带上cookie请求
  6. add_header 'Access-Control-Allow-Credentials' 'true';
  7. #允许请求的方法,比如 GET / POST / PUT / DELETE
  8. add_header 'Access-Control-Allow-Methods' *;
  9. #允许请求的header
  10. add_header 'Access-Control-Allow-Headers' *;
  11. }
  12. }

资源防盗链

为了防止其他网站直接实用我方的静态资源,可以增加防盗链配置

  1. server {
  2. location ~*/(js|image|css) {
  3. # 检测*.autofelix.cn的请求,如果检测是无效的,直接返回403
  4. valid_referers *.autofelix.cn;
  5. if ($invalid_referer) {
  6. return 403;
  7. }
  8. }
  9. }

Keepalived 提高吞吐量

通过 keepalived 可以设置长连接处理的数量

通过 proxy_http_version 可以设置长连接 http 版本

通过 proxy_set_header 可以清除 connection header 信息

  1. # nginx.conf中配置吞吐量
  2. upstream web {
  3. server 192.168.37.3 weight=1;keepalive 32;
  4. }
  5.  
  6. # default.conf中配置
  7. location / {
  8. proxy_pass http://tomcats;
  9. proxy_http_version 1.1;
  10. proxy_set_header Connection "";
  11. }

HTTP 强制跳转 HTTPS

很多网站中,都强制实用 https 协议

这样我们就需要将 http 强制跳转到 https

  1. server {
  2. # 监听的端口号
  3. listen 80;
  4. # 强制跳转
  5. rewrite ^(.*)$ https://$host$1 permanent;
  6. }
  7. server {
  8. # 监听的端口号
  9. listen 443;
  10. # 主机名
  11. server_name www.520web.cn;
  12. # 开启ssl验证
  13. ssl on;
  14. # 字符集
  15. charset utf-8;
  16. # 访问的根目录
  17. root /var/www/html;
  18. # 错误页面
  19. error_page 404 ...404文件路径;
  20. # 图片视频静态资源缓存到客户端时间
  21. location ~ .*\.(jpg|jpeg|gif|png|ico|mp3|mp4|swf|flv){
  22. expires 10d;
  23. }
  24. # js/css静态资源缓存到客户端时间
  25. location ~ .*\.(js|css){
  26. expires 5d;
  27. }
  28. # ssl的相关配置,pem文件的地址
  29. ssl_certificate ...pem文件的绝对路径;
  30. # key文件的绝对路径
  31. ssl_certificate_key ...key文件的绝对路径;
  32. # 断开重连时间
  33. ssl_session_timeout 5m;
  34. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  35. # ssl协议
  36. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  37. ssl_prefer_server_ciphers on;
  38. # 首页访问的文件
  39. location / {
  40. index index.php index.html index.htm;
  41. }
  42.  
  43. # php-ftm配置
  44. location ~ \.php$ {
  45. fastcgi_pass 127.0.0.1:9000;
  46. fastcgi_index index.php;
  47. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  48. include fastcgi_params;
  49. }
  50. }

到此这篇关于超实用的Nginx常见配置合集分享的文章就介绍到这了,更多相关Nginx常见配置内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号