单个nginx虚拟服务器如何处理端口80和443?

时间:2014-08-20 08:13:16

标签: ssl nginx

我有一个带有虚拟服务器设置的配置文件,它在端口443上运行,用于ssl。我也希望这个虚拟服务器能够处理端口80上的非ssl流量。

我希望能够做到以下几点,但它似乎无法发挥作用。

server {
    listen 443 ssl;
    listen 80;
    server_name example.com;
    ...
}

看起来这些设置下面的ssl选项会导致非ssl流量出现问题。

2 个答案:

答案 0 :(得分:16)

是的,当然。

server {
  listen 80;
  listen 443 ssl;
  # force https-redirects
  if ($scheme = http) {
    return 301 https://$server_name$request_uri;
  }
}

这是我的帖子,名称" Nginx Configuration for HTTPS"其中包含更多信息。

答案 1 :(得分:15)

删除ssl on;指令。

<{1}}指令中的

ssl标志正是您所需要的。

请参阅http://nginx.org/en/docs/http/configuring_https_servers.html#single_http_https_server