【问题标题】:How to configure nginx to proxy another service serving http and https on different ports?如何配置 nginx 以代理在不同端口上提供 http 和 https 的另一个服务?
【发布时间】:2012-06-17 09:06:32
【问题描述】:

用例:

  • 使用 nginx 作为在 80 和 443(多个虚拟主机)上运行的多个网站/服务的前端。
  • 在服务于 http:8090 和 https:8099 的 localhost 上运行服务 x

我需要如何配置 nginx,以便人们可以仅使用名称访问,而无需指定端口。

【问题讨论】:

    标签: http redirect https proxy nginx


    【解决方案1】:

    我们对主机使用以下内容:

    http {
        server {
          server_name ~^(www\.)?(?<domain>.+)$;
          listen *:80;
    
          location / {
              proxy_pass $scheme://<origin>$uri$is_args$args;
              include basic-proxy-settings.conf;
          }
        }
        server {
          server_name ~^(www\.)?(?<domain>.+)$;
          listen *:443 ssl;
    
          location / {
              proxy_pass $scheme://<origin>$uri$is_args$args;
              include basic-proxy-settings.conf;
          }
          include ssl-settings.conf;
        }
    }
    

    这允许我们的上游代理在客户端请求不安全资源时通过 HTTP 与源服务器通信,并在请求安全资源时通过 SSL/HTTPS 与源服务器通信。它还允许我们的源服务器负责强制重定向到安全连接等。

    下一次,为什么不提供一个代码示例,详细说明您尝试过的、有效的和无效的?

    【讨论】:

      【解决方案2】:

      这是一个相当正常的设置。像往常一样配置直接在 Nginx 上服务的主机。由于他们需要同时监听 80 和 443,因此每个主机条目都会包含以下内容:

      server {
          listen  80;
          listen  443 ssl;
      }
      

      Nginx SSL docs 有完整的详细信息。

      然后将一个server{}定义的流量代理到后端服务:

      server {
           server_name  example.com;
           location / { proxy_pass http://127.0.0.1:8090; }
      } 
      

      您只需要一个到后端服务器的代理连接,“http”或“https”。如果两台服务器之间的连接是安全的,您可以使用“http”,即使对于通过 https 到达 nginx 的连接也是如此。如果服务在同一台机器上,这可能是合适的。否则,如果需要保护 nginx 和后端服务器之间的连接,则可以通过 https 代理所有流量。

      【讨论】:

      • 这没有为 https 提供解决方案。
      • 不确定我是否喜欢 nginx 服务器和目标 http 服务器之间的连接不安全的想法,即使您说的是可能的(nginx 可以通过 http 将 https 流量传递到目标服务器)。大多数情况下,由于边缘节点的横向扩展,http 服务器与 nginx 不在同一台服务器上,这意味着从 nginx 到目标 http 的连接将是不安全的。
      猜你喜欢
      • 2019-05-20
      • 1970-01-01
      • 2012-06-26
      • 2017-05-16
      • 2021-01-17
      • 2014-04-22
      • 2018-03-06
      • 1970-01-01
      相关资源
      最近更新 更多