【发布时间】:2021-11-09 17:56:12
【问题描述】:
我有 2 台服务器。一个有公共IP并可以上网。用作生产服务器。 另一台服务器用作登台服务器。
mydomain.com 指向生产服务器,它工作正常。 我想要实现的是 staging-backend.mydomain.com 指向生产服务器,生产服务器中的 nginx 应该转发到临时服务器。
当用户浏览 staging-backend.mydomain.com 时,流量会到达生产服务器 nginx,然后它会在 staging 服务器和用户之间中继所有流量。
我尝试了以下配置,但每当我在网络浏览器中输入 staging-backend.mydomain.com 时,浏览器中的 URL 都会更改为私有 IP。我想将 staging-backend.mydomain.com 保留为 Web 浏览器中的 URL,并使 staging web 可用。
upstream staging {
server 192.168.1.100:443;
}
server {
listen 80;
server_name staging-backend.mydomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name staging-backend.mydomain.com;
ssl_certificate /var/www/project/ssl_certs/__mydomain_com.chain.crt;
ssl_certificate_key /var/www/project/ssl_certs/__mydomain_com.key;
access_log /var/log/nginx/staging_backend.access.log;
error_log /var/log/nginx/staging_backend.error.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass https://staging$request_uri;
}
}
【问题讨论】:
-
到目前为止,是因为 staging server 中的 nginx server。
-
这是因为 staging server 中的 Laravel 应用。当流量到达默认 URL 时,它会重定向到 /login,并且还会将域更改为 IP。当我直接输入域/登录时,浏览器保留域。
标签: laravel nginx reverse-proxy nginx-reverse-proxy proxypass