配置Nginx反向代理、HTTPS和认证

博客和更新地址:配置Nginx反向代理、HTTPS和认证

前言

由于经常用到Nginx反向代理配置,手敲代码麻烦,所以记录一下。

创建密码文件

创建Nginx认证密码文件

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配置

编辑站点配置文件

cd /etc/nginx/conf.d
vim <domain>.conf

内容为

# 配置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"配置只需要一次。

保存文件后重新加载配置

systemctl reload nginx

最后测试网站是否正常。

配置Nginx反向代理、HTTPS和认证

上一篇:web常用自动化库——selenium总结(转)


下一篇:ue4 lightmap的解码