我怎样才能让nginx在一个位置需要HTTPS,同时让所有其他位置都可以选择?

时间:2013-10-29 18:25:43

标签: http https nginx

目前,我使用两个listen指令为nginx配置了一个同时为HTTP和HTTPS提供服务的站点:

listen 80 default_server;
listen 443 ssl;

我想对网站内的所有位置使用此配置;但是只有我想要HTTPS的位置。

location / {
  // Both HTTP and HTTPS
}

location /admin {
  // Require HTTPS
}

我该怎么做呢?是否需要单独的HTTP和HTTPS服务器配置?

1 个答案:

答案 0 :(得分:0)

我将它们拆分为2台服务器

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
        #normal config
    }

    location /admin {
        return 301 https://$http_host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    location / {
        #normal config for frontend
    }

    location /admin {
        #admin settings
    }
}

您可以将公共配置拆分为单独的文件,并将它们包含在两个服务器中,而不是每次更改任何内容时重写它们