【问题标题】:Proxy Pass and Keep Original Domain (Nginx, Laravel)代理传递并保留原始域(Nginx,Laravel)
【发布时间】: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


【解决方案1】:

我得到它是因为 Laravel 应用程序。

当用户没有登录时,默认重定向到登录页面。这就是为什么我的 Laravel 应用程序重定向到 /login URL 但是应用程序一直使用私有 IP 而不是域名。 我需要在 routes/web.php 中使用代理 URL 而不是使用默认值。

请参阅此答案以了解具有反向代理的 Laravel 应用程序 -> Laravel routes behind reverse proxy showing wrong url

我现在有更多的白发。 :)

【讨论】:

    猜你喜欢
    • 2018-05-06
    • 2023-03-31
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多