配置Nginx反向代理、HTTPS和認證

博客和更新地址:配置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個字符緩存

配置SSl證書

建立證書目錄安全

mkdir /etc/nginx/cert
cd /etc/nginx/cert

將證書和密鑰上傳至該路徑下服務器

Nginx配置

編輯站點配置文件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

最後測試網站是否正常。

相關文章
相關標籤/搜索