第一层 blog.demo.com nginx配置
server {
listen 443 ssl;
server_name blog.demo.com;
#ssl
ssl_certificate conf.d/ssl/*.demo.com.crt;
ssl_certificate_key conf.d/ssl/*.demo.com.key;
location / {
# 传递原始请求头(确保第二层能获取完整URL信息)
proxy_set_header Host $host; # 传递客户端访问的域名
proxy_set_header X-Original-URI $request_uri; # 传递完整URI(含参数)
proxy_set_header X-Real-IP $remote_addr; # # 传递IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 传递IP
proxy_redirect http:// https://;
# 关键:proxy_pass末尾不带/,确保完整透传URL
proxy_pass https://blog.proxy.com:1600;
}
}
第二层 blog.proxy.com 配置
server {
listen 1600 ssl;
server_name blog.proxy.com;
gzip on;
gzip_http_version 1.1;
gzip_static on;
gzip_min_length 1;
gzip_comp_level 4;
gzip_vary on;
gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
#ssl on;
#从腾讯云获取到的第一个文件的全路径
ssl_certificate /etc/nginx/conf.d/keys/*.proxy.com/fullchain.cer;
#从腾讯云获取到的第二个文件的全路径
ssl_certificate_key /etc/nginx/conf.d/keys/*.proxy.com/*.iton.top.key;
location / {
# 传递原始请求头(确保应用层能获取对应头部数据)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 转发时使用https协议
proxy_set_header X-Forwarded-Proto https;
proxy_redirect http:// https://;
proxy_http_version 1.1;
proxy_pass http://172.16.1.61:8999;
}
}
此时访问 : https://blog.demo.com
会下载一个空文件
修改第二层的server_name,修改为和第一层传递的Host一致
修改后如下:
server {
listen 1600 ssl;
server_name blog.demo.com;
gzip on;
gzip_http_version 1.1;
gzip_static on;
gzip_min_length 1;
gzip_comp_level 4;
gzip_vary on;
gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
#ssl on;
#从腾讯云获取到的第一个文件的全路径
ssl_certificate /etc/nginx/conf.d/keys/*.proxy.com/fullchain.cer;
#从腾讯云获取到的第二个文件的全路径
ssl_certificate_key /etc/nginx/conf.d/keys/*.proxy.com/*.iton.top.key;
location / {
# 传递原始请求头(确保应用层能获取对应头部数据)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 转发时使用https协议
proxy_set_header X-Forwarded-Proto https;
proxy_redirect http:// https://;
proxy_http_version 1.1;
proxy_pass http://172.16.1.61:8999;
}
}
修改重点:
server_name blog.demo.com; # 必须与第一层传来的 Host 一致
blog.proxy.com 在多层嵌套中,只起到IP找到服务,不提供域名服务
此时修改后即可正常访问。
https://blog.xqlee.com/article/2510101634144115.html