0

用例:

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

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

4

2 回答 2

1

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

server {
    listen  80;
    listen  443 ssl;
}

Nginx SSL 文档有完整的细节。

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

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

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

于 2012-06-14T13:28:10.297 回答
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 与源服务器通信。它还允许我们的源服务器负责强制重定向到安全连接等。

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

于 2015-05-23T10:27:12.027 回答