超實用的Nginx常見配置合集分享
封禁 IP
通過 deny 可以封禁指定 IP
http { # .... # 封禁IP deny 192.168.4.3; deny 31.42.145.0/24; deny 51.12.35.0/24; }
僅開放內網
需要先禁止 192.168.1.1
開放其他內網網段,然後禁止其他所有 IP
location / { # block one workstation deny 192.168.1.1; # allow anyone in 192.168.1.0/24 allow 192.168.1.0/24; # drop rest of the world deny all; }
負載均衡
需要在 nginx.conf 中配置轉發服務器信息
權重: weight=1,權重如果分配的值越大,權重越高
最大連接數: max_fails=3,最多連接失敗次數為3次
連接失敗時間: fail_timeout=20s,每次連接失敗的時間
在站點配置 default.conf 中開啟負載均衡
# nginx.conf中配置轉發服務器信息 upstream web { server 192.168.37.2 weight=1 max_fails=3 fail_timeout=20s; server 192.168.37.3 weight=1 max_fails=3 fail_timeout=20s; } # default.conf中開啟負載均衡 location / { proxy_pass http://web/; }
列出文件列表
有時候服務器作為資源服務器,給用戶提供下載資源使用
需要將服務上的文件以目錄形式列出來
可以通過配置 autoindex on 允許列出目錄,啟用目錄流量
可以通過 autoindex_exact_size off 顯示出文件的確切大小,單位是 bytes
可以通過 autoindex_localtime on 顯示的文件時間為文件的服務器時間
location / { autoindex on; autoindex_exact_size on; autoindex_localtime on; }
路由轉發
有時候用戶通過路由訪問服務器的資源,其實你的資源在另一個文件夾下面
可以使用 alias 命令,將用戶請求進行轉發
# nginx服務器 location /static { alias /public; } # window服務器 location ^~ /static { alias "D:\\public\\靜態資源"; }
開啟 gzip 壓縮
gzip 壓縮是一種提升訪問速度的優化方向,可以大大提高
http { # 開啟gzip gzip on; # 是否在http header中添加Vary: Accept-Encoding,建議開啟 gzip_vary on; # 啟用gzip壓縮的最小文件,小於設置值的文件將不會壓縮 gzip_min_length 1k; gzip_proxied any; # gzip 壓縮級別,1-9,數字越大壓縮的越好,也越占用CPU時間 gzip_comp_level 6; # 設置壓縮所需要的緩沖區大小 gzip_buffers 16 8k; # 設置gzip的版本 gzip_http_version 1.1; # 進行壓縮的文件類型。javascript有多種形式,後面的圖片壓縮不需要的可以自行刪除 gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; }
解決跨域
server { location / { #允許跨域請求的域,*代表所有 add_header 'Access-Control-Allow-Origin' *; #允許帶上cookie請求 add_header 'Access-Control-Allow-Credentials' 'true'; #允許請求的方法,比如 GET / POST / PUT / DELETE add_header 'Access-Control-Allow-Methods' *; #允許請求的header add_header 'Access-Control-Allow-Headers' *; } }
資源防盜鏈
為瞭防止其他網站直接實用我方的靜態資源,可以增加防盜鏈配置
server { location ~*/(js|image|css) { # 檢測*.autofelix.cn的請求,如果檢測是無效的,直接返回403 valid_referers *.autofelix.cn; if ($invalid_referer) { return 403; } } }
Keepalived 提高吞吐量
通過 keepalived 可以設置長連接處理的數量
通過 proxy_http_version 可以設置長連接 http 版本
通過 proxy_set_header 可以清除 connection header 信息
# nginx.conf中配置吞吐量 upstream web { server 192.168.37.3 weight=1;keepalive 32; } # default.conf中配置 location / { proxy_pass http://tomcats; proxy_http_version 1.1; proxy_set_header Connection ""; }
HTTP 強制跳轉 HTTPS
很多網站中,都強制實用 https 協議
這樣我們就需要將 http 強制跳轉到 https
server { # 監聽的端口號 listen 80; # 強制跳轉 rewrite ^(.*)$ https://$host$1 permanent; } server { # 監聽的端口號 listen 443; # 主機名 server_name www.520web.cn; # 開啟ssl驗證 ssl on; # 字符集 charset utf-8; # 訪問的根目錄 root /var/www/html; # 錯誤頁面 error_page 404 ...404文件路徑; # 圖片視頻靜態資源緩存到客戶端時間 location ~ .*\.(jpg|jpeg|gif|png|ico|mp3|mp4|swf|flv){ expires 10d; } # js/css靜態資源緩存到客戶端時間 location ~ .*\.(js|css){ expires 5d; } # ssl的相關配置,pem文件的地址 ssl_certificate ...pem文件的絕對路徑; # key文件的絕對路徑 ssl_certificate_key ...key文件的絕對路徑; # 斷開重連時間 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # ssl協議 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; # 首頁訪問的文件 location / { index index.php index.html index.htm; } # php-ftm配置 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
到此這篇關於超實用的Nginx常見配置合集分享的文章就介紹到這瞭,更多相關Nginx常見配置內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Nginx 禁止直接訪問目錄或文件的操作方法
- 記錄一次nginx啟動失敗的解決過程
- Nginx文件已經存在全局反向代理問題排查記錄
- Nginx 502 bad gateway錯誤解決的九種方案及原因
- Nginx解決history模式下頁面刷新404問題示例