如何配置nginx代理在不同端口上提供http和https的其他服务?

时间:2012-06-14 10:34:26

标签: http redirect https proxy nginx

用例:

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

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

2 个答案:

答案 0 :(得分:1)

这是一个相当正常的设置。正常配置直接在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代理所有流量。

答案 1 :(得分:0)

我们在主持人中使用以下内容:

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进行通信。它还允许我们的原始服务器负责强制重定向到安全连接等。

下一次,为什么不提供一个代码示例,详细说明您尝试过的内容,哪些内容有效以及哪些内容没有?