打印

[Nginx] 有关nginx 301的问题

有关nginx 301的问题

在nginx的配置文件里添加了301的代码:

如下:
if ($server_port = 80)
{
return 301 https://$server_name$request_uri;
}
if ($scheme = http)
{
return 301 https://$server_name$request_uri;



都能301跳转。后来发现一个问题。

新开了一个域名的解析,就是二级域名,服务器的IP和原来的不一样。
原来的服务器IP是:1.1.1.1   绑定域名:5137bj.com  www.5137bj.com
新的二级域名的服务器IP是:2.2.2.2  绑定域名:mp.5137bj.com

我在配置文件里一开启上面的301跳转代码,就会出现:
打开http://mp.5137bj.com  就会以https方式打开。也就是https://mp.5137bj.com

问题是,2.2.2.2没有做任何的https的协议配置啊。

请教一下军哥和各位。

https的证书,我只用5137bj.com和www.5137bj.com来申请的。而且是两台服务器哦。

TOP

你前面的301代码你加到哪里了?加的位置不对肯定所有域名都跳到https上

TOP

回复 2# 的帖子

代码加在server这层里。。

配置文件如下:
server
    {
        listen 80;
        listen 443 ssl;
        #listen [::]:80;
        server_name 5137bj.com www.5137bj.com;
        add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/**/5137bj.com;
        

        include wordpress.conf;
        #error_page   404   /404.html;
        include enable-php.conf;

        ssl on;
        ssl_certificate /usr/*/*/5137bj.crt;
        ssl_certificate_key /usr/*/*/5137bj.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

if ($server_port = 80)
{
return 301 https://$server_name$request_uri;
}
if ($scheme = http)
{
return 301 https://$server_name$request_uri;
}

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /\.
        {
            deny all;
        }

location = /robots.txt {
        if ($http_user_agent !~* "spider|bot|Python-urllib|pycurl")
                {
                return 403;
                }
        }

        access_log  /*/**.log;
    }

TOP

回复 3# 的帖子

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"; 你自己设置的让全部域名包含二级域名都强制https,而且有效期是365天,到期以前,访问过该域名的浏览器都会记录下来强制https,除非手动清空浏览器里的HSTS缓存

TOP

回复 4# 的帖子

非常感谢军哥。

问题得到了解决!!!!

TOP