frp 中转wordpress nginx 配置
本文最后更新于 322 天前,其中的信息可能已经有所发展或是发生改变。

您可以通过在 HTTP 的服务器块中添加重定向规则来实现让用户通过 HTTP 访问时自动跳转到 HTTPS。以下是一个示例配置:

server {
    listen 80;
    server_name nezha.343700.xyz;

    # 重定向到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name nezha.343700.xyz;
    ssl_certificate /root/ssl/server.crt; #证书位置
    ssl_certificate_key /root/ssl/server.key; #私钥位置


    location / { 
    	proxy_pass http://127.0.0.1:8008;
    	proxy_redirect off;
    	proxy_set_header Upgrade $http_upgrade;
    	proxy_set_header Connection "upgrade";
  	proxy_set_header Host $host;
   	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 $scheme; 
    }
}

其他方法比如: proxy_set_header X-Forwarded-Proto https;
是否可行

ChatGPT

您可以使用 proxy_set_header X-Forwarded-Proto https; 来在 HTTP 请求中添加 X-Forwarded-Proto 头部,将其设置为 https。这样,后端服务器在接收到这个请求头后,可以认为请求是通过 HTTPS 协议进行的,从而处理相应的重定向或其他安全措施。

但是,请注意,这种方法不会强制用户从 HTTP 转到 HTTPS。它只是在 HTTP 请求中添加了一个头部信息,告诉后端服务器此请求的原始协议是 HTTPS。因此,您仍然需要在 Nginx 中设置一个额外的服务器块来处理 HTTP 请求并进行重定向到 HTTPS。

要实现强制 HTTP 跳转到 HTTPS,您需要使用 return 301rewrite 指令来实现。这是因为浏览器在访问一个网站时,只有通过 HTTP 访问时才会发送请求,而不会自动转为 HTTPS。所以您需要通过服务器配置来强制进行重定向。

proxy_set_header Upgrade-Insecure-Requests 1;
添加这行代码

ChatGPT

proxy_set_header Upgrade-Insecure-Requests 1; 这行配置实际上是在告诉后端服务器,客户端的请求是支持通过升级请求头部来请求安全资源。该头部通常用于指示服务器,在支持 HTTPS 的情况下,将页面中的非安全资源(例如图片、脚本等)升级到 HTTPS。

但是,这行配置并不能直接实现 HTTP 到 HTTPS 的强制重定向。它只是一个指示性的头部,告诉后端服务器客户端请求的支持情况。要实现强制 HTTP 跳转到 HTTPS,您仍然需要通过 return 301rewrite 指令来配置。

#WordPress 
server {
	listen 80;
	#        listen 443 ssl http2; #开启http2提高性能
	server_name hk.ss.de; #你的域名
	ssl_certificate /etc/hk.sanqiz.de/server.crt; #证书位置
	ssl_certificate_key /etc/hk.sanqiz.de/server.key; #私钥位置
	ssl_session_timeout 1d;
	ssl_session_cache shared:MozSSL:10m;
	ssl_session_tickets off;


	#启用缓存
	location ~ .*\.(gif|jpg|jpeg|png|css|js|ico)$ {
		proxy_pass http://127.0.0.1:7080; #如果没有缓存则通过proxy_pass转向请求 
		proxy_redirect off;
		access_log off; # 关闭日志
		proxy_set_header Host $host;
		proxy_cache cache_one;
		proxy_cache_valid 200 302 24h; #对不同的HTTP状态码设置不同的缓存时间,h小时,d天数 
		proxy_cache_valid 301 1d;
		proxy_cache_valid any 1m;
		expires 30d;
		add_header wall "cache-file";
	}

	location / {
		#注意我frp配置的是http协议,所以端口为7080,
		proxy_pass http://127.0.0.1:7080;
		rewrite ^/(.*)$ /$1 break;
		proxy_redirect off;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Upgrade-Insecure-Requests 1;
		proxy_set_header X-Forwarded-Proto https;
		#解决nginx反向代理Mixed Content和Blockable问题
		add_header Content-Security-Policy upgrade-insecure-requests;
	}

}

暂无评论

发送评论 编辑评论


				
上一篇
下一篇