nginx:同时为 domain.com 和 www.domain.com 提供服务

nginx:同时为 domain.com 和 www.domain.com 提供服务

我目前有一个 nginx 服务器,可以通过 HTTP 和 HTTPS 输入 domain.com 来访问。但是,当我尝试通过输入 www.domain.com 来连接时,连接似乎会挂起,并且 Firefox 会报告“页面加载时与服务器的连接已重置...”

这是我当前的 server_name 配置:

server_name localhost www.example.com example.com;

nginx 文档似乎表明这应该可行,我做错了什么?

答案1

server {
    listen  80;
    server_name  example.com;
    return 301 $scheme://www.example.com$request_uri;    
    }

会将 example.com 重定向至 www.example.com,并且

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

    location / {
        root   /var/www/example.com;
        index  index.html index.htm;
        }
    }

将提供 www.example.com 服务。

你可以对 https 做同样的事情,但不太可能有人会费力地输入 https:// 和非规范的地址,所以

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


    ssl  on;
    ssl_certificate  /etc/ssl/private/www.example.com.crt;
    ssl_certificate_key /etc/ssl/private/www.example.com.key;

    ssl_session_timeout  10m;
    ssl_session_cache shared:SSL:10m;

    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers HIGH:!ADH:!MD5;
    ssl_prefer_server_ciphers   on;


    location / {
        root   /var/www/example.com;
        index  index.html index.htm;
        }
    }

就足够了。

相关内容