博客和更新地址:配置Nginx反向代理、HTTPS和認證nginx
因爲常常用到Nginx反向代理配置,手敲代碼麻煩,因此記錄一下。算法
建立Nginx認證密碼文件vim
mkdir /etc/nginx/conf.d/auth && cd /etc/nginx/conf.d/auth
printf "<username>:$(openssl passwd -crypt <password>)\n" >> passwd
其中<username>
爲用戶名,<password>
爲密碼,密碼長度最多8個字符緩存
建立證書目錄安全
mkdir /etc/nginx/cert
cd /etc/nginx/cert
將證書和密鑰上傳至該路徑下服務器
編輯站點配置文件cookie
cd /etc/nginx/conf.d
vim <domain>.conf
內容爲session
# 配置proxy_cache_path模塊緩存數據 proxy_cache_path /tmp levels=1:2 keys_zone=cache:10m max_size=100m inactive=60m use_temp_path=off; server { listen 80; server_name <domain>; # 重寫爲https location / { rewrite ^(.*)$ https://<domain>$1 permanent; } } server { listen 443 ssl; server_name <domain>; # Nginx認證 auth_basic "Authentication"; # 有提示時顯示的網站名 auth_basic_user_file conf.d/auth/passwd; # 密碼文件路徑 # ssl證書地址 ssl_certificate /etc/nginx/cert/<domain>.pem; # 證書文件的路徑 ssl_certificate_key /etc/nginx/cert/<domain>.key; # 密鑰文件的路徑 # ssl驗證相關配置 ssl_session_timeout 5m; # 緩存有效期 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 安全連接可選的加密協議 ssl_prefer_server_ciphers on; # 使用服務器端的首選算法 # 反向代理配置 location / { proxy_redirect off; # 關閉重定向 proxy_cache cache; # 設置代理緩存 proxy_cache_valid 200 304 12h; proxy_cache_valid any 10m; proxy_cookie_domain <proxy_domain> <domain>; proxy_pass https://<proxy_domain>; # 代理的地址 proxy_connect_timeout 20s; proxy_read_timeout 600s; proxy_send_timeout 600s; # 設置請求體頭部 proxy_set_header Host "<proxy_domain>"; proxy_set_header User-Agent $http_user_agent; proxy_set_header Referer https://<proxy_domain>; proxy_set_header Accept-Encoding ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header Accept-Language "zh-CN"; proxy_set_header Cookie "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2W1IQ-Maw"; sub_filter https://<proxy_domain> https://<domain>; #字符串替換 sub_filter_once off; addition_types *; } }
其中的<proxy_domain>
爲要代理的地址,<domain>
爲本身的地址,有多個站點時"proxy_cache_path"配置只須要一次。dom
保存文件後從新加載配置post
systemctl reload nginx
最後測試網站是否正常。