我在自己的网站托管上创建了一个 CNAME 来重定向:
- test.example.org 到 test.example.com
- prod.example.org 到 prod.example.com
现在我尝试将 http 重定向到 https 进行生产和测试,然后重定向到我的应用程序
server {
listen 80;
server_name prod.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 80;
server_name test.example.com;
return 301 https://$server_name$request_uri;
}
# TEST
server {
listen 80;
server_name test.example.com;
# SSL
ssl on;
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
location / {
proxy_pass http://127.0.0.1:8181;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# PROD
server {
listen 80;
server_name prod.example.com;
# SSL
ssl on;
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
location / {
proxy_pass http://127.0.0.1:8182;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
上述配置存在问题,如果我输入测试。例子。组织我将重定向至产品。例子。com
答案1
您需要.example.org
在 nginx 设置中为域定义服务器块。CNAME 映射仅将一个域名映射到另一个域名,因此客户端看到的 IP 地址test.example.org
是运行 nginx 服务器的 IP 地址。
因此,客户端发送一个带有主机头/SSL 域名的请求test.example.org
。由于 nginx 中没有匹配的server
块,因此它使用默认块,在本例中是定义的最后一个块。这是因为您没有default_server
设置。