博客和更新地址:配置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
最后测试网站是否正常。