前言
由于经常用到Nginx反向代理配置,手敲代码麻烦,所以记录一下。
创建密码文件
创建Nginx认证密码文件
1
| mkdir /etc/nginx/conf.d/auth && cd /etc/nginx/conf.d/auth
|
1
| printf "<username>:$(openssl passwd -crypt <password>)\n" >> passwd
|
其中<username>
为用户名,<password>
为密码,密码长度最多8个字符
配置SSl证书
创建证书目录
将证书和密钥上传至该路径下
Nginx配置
编辑站点配置文件
内容为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| # 配置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”配置只需要一次。
保存文件后重新加载配置
最后测试网站是否正常。