【问题标题】:Nginx - Force WWW with TLC/SSLNginx - 使用 TLC/SSL 强制 WWW
【发布时间】:2017-03-09 16:43:00
【问题描述】:

我想在我的网站上强制使用 ssl 并将非 www 重定向到 www。我阅读了很多指南并尝试了示例配置,但没有完全发挥作用。 使用我的配置,它给了我太多重定向错误

这是我的配置

    server {
            listen 80 default_server;
            listen [::]:80 default_server;

            # SSL configuration
            #
            server_name  mydomainname.com www.mydomainname.com;
            return 301 https://www.mydomainname.com$request_uri;
    }

    server {
            listen 443 ssl http2;
            listen [::]:443 ssl default_server;
            include snippets/ssl-mydomainname.com.conf;
            include snippets/ssl-params.conf;
            server_name mydomainname.com;
            return 301 https://www.mydomainname.com$request_uri;
            #
            # Note: You should disable gzip for SSL traffic.
            # See: https://bugs.debian.org/773332
            #
            # Read up on ssl_ciphers to ensure a secure configuration.
            # See: https://bugs.debian.org/765782
            #
            # Self signed certs generated by the ssl-cert package
            # Don't use them in a production server!
            #
            # include snippets/snakeoil.conf;

            root /var/www/blog;

            # Add index.php to the list if you are using PHP
            index index.html index.htm index.nginx-debian.html;

            server_name _;
     location ~ /.well-known {
                    allow all;
            }
            location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    try_files $uri $uri/ =404;
            }
    location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
        expires 30d;
        add_header Pragma public;
        add_header Cache-Control "public";
    }
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ \.php$ {
            #       include snippets/fastcgi-php.conf;
            #
            #       # With php7.0-cgi alone:
            #       fastcgi_pass 127.0.0.1:9000;
            #       # With php7.0-fpm:
            #       fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            #}

            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #       deny all;
            #}
    }

    # Virtual Host configuration for example.com
    #
    # You can move that to a different file under sites-available/ and symlink that
    # to sites-enabled/ to enable it.
    #
    #server {
    #       listen 80;
    #       listen [::]:80;
    #
    #       server_name example.com;
    #
    #       root /var/www/example.com;
    #       index index.html;
    #
    #       location / {
    #               try_files $uri $uri/ =404;
    #       }
    #}

请给我一些建议。

【问题讨论】:

    标签: ssl redirect nginx


    【解决方案1】:

    您需要将 443 服务器块分成两部分。例如:

    server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        include snippets/ssl-mydomainname.com.conf;
        include snippets/ssl-params.conf;
        return 301 https://www.mydomainname.com$request_uri;
    }
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        include snippets/ssl-mydomainname.com.conf;
        include snippets/ssl-params.conf;
        server_name www.mydomainname.com;
        ...
    }
    

    所以默认的安全服务器会重定向到您的安全 www 服务器。有关更多信息,请参阅this document。这还假定证书对 www 和非 www 服务器名称都有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-27
      • 2013-01-19
      • 1970-01-01
      • 2015-09-16
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多