【问题标题】:How do I redirect between nginx servers on the same domain?如何在同一域上的 nginx 服务器之间进行重定向?
【发布时间】:2017-04-06 21:14:31
【问题描述】:

我有两个 nginx 服务器 A 和 B。B 有一个服务器块,例如 example.com,其中包括 http 到 https 重定向。现在我希望 A 将 example.com 的流量直接引导到 B。我尝试了以下操作

在 A 中:

upstream ipOfB {
    server 12.34.56.78;
}

server {
   listen 80;
   listen 443;
   server_name example.com;
   location / {
       proxy_set_header Host $host;
       proxy_pass http://ipOfB;
   }
}`

在 B 中:

upstream docker {
    server 0.0.0.0:8080;
}

server {
   listen 80;
   server_name example.com;
   return 301 https://$host$request_uri;
}

server {
   listen 443 ssl;
   server_name example.com

   location / {
     ...
   }
}

我在尝试 example.com 时收到了太多重定向。

【问题讨论】:

  • 您找到解决方案了吗?我有同样的问题。

标签: nginx nginx-location


【解决方案1】:

有一个监听 80 端口但重定向到 443 的服务器块。如下所示:

upstream example {
    server     localhost:3000;
}

server{
   listen 443;
   server_name example.com;

   ssl on;
   #Other SSL Configuration

  location / {
    proxy_pass http://example;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

server{
  listen 80;
  server_name example.com;
  root /usr/share/nginx/html;

  location / {
    proxy_pass http://example;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
  return 301 https://example.com;
}

要使用免费 SSL 进行测试,您可以查看此article

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2020-06-14
    • 2020-05-28
    • 1970-01-01
    • 2014-04-06
    • 2017-03-27
    相关资源
    最近更新 更多