全球主机交流论坛

标题: nginx的https如何跳转到其他url? [打印本页]

作者: cjf051    时间: 2017-5-31 15:26
标题: nginx的https如何跳转到其他url?
server {
    listen IP:80;
    server_name  www.domain.com;
    rewrite ^(.*) https://www.domain.com$1 permanent;
}


这样只能让http跳转到https

如果在浏览器输入https://domain.com   是不会跳转到https://www.domain.com的。

怎样配置能让输入https也能跳转?请大佬指点。
作者: ayue168    时间: 2017-5-31 15:28
在 listen 的443 端口下的server 写一个 rewrite or return 301啊
作者: ayue168    时间: 2017-5-31 15:29
server_name好像可以写多个的吧.
作者: cjf051    时间: 2017-5-31 15:31
ayue168 发表于 2017-5-31 15:28
在 listen 的443 端口下的server 写一个 rewrite or return 301啊


server {
    listen IP:80;
    listen IP:443;
    server_name  www.domain.com;
    rewrite ^(.*) https://www.domain.com$1 permanent;
}


这样吗?这样之后网站就无法访问了哦
作者: vpsbar    时间: 2017-5-31 15:32
跳转的办法实在是太多了,楼下回答~
作者: ayue168    时间: 2017-5-31 15:32
https://xxx.com 转 https://www.xxx.com  

server{
listen 443;// https 443端口
server_name xxx.com;
rewrite ^(.*) https://www.xxx.com$1 permanent;
}
作者: cjf051    时间: 2017-5-31 15:36
ayue168 发表于 2017-5-31 15:32
https://xxx.com 转 https://www.xxx.com  

server{

配置之后 访问时提示  Error 525 Ray    SSL handshake failed
作者: ayue168    时间: 2017-5-31 15:37
哦,443要证书.rewrite是你的站吗.不是的话我就不知道了哦.
作者: cjf051    时间: 2017-5-31 15:40
ayue168 发表于 2017-5-31 15:37
哦,443要证书.rewrite是你的站吗.不是的话我就不知道了哦.

是我自己的站,http可以正常跳转到https://www.domain.com的
作者: cjf051    时间: 2017-5-31 15:40
vpsbar 发表于 2017-5-31 15:32
跳转的办法实在是太多了,楼下回答~

你这太坑了,网上都是http跳到https的
作者: ayue168    时间: 2017-5-31 15:42
你看下你的nginx  conf 还有443.在原本的443里面写rewrite
作者: cjf051    时间: 2017-5-31 15:45
本帖最后由 cjf051 于 2017-5-31 15:48 编辑
ayue168 发表于 2017-5-31 15:42
你看下你的nginx  conf 还有443.在原本的443里面写rewrite


这样网址可以跳了,但是页面无法访问,访问提示:重定向太多!
作者: ayue168    时间: 2017-5-31 15:49
有证书的443的 server_name写的是 www.xxx.com的话你就在写一个 server{listen 443; rewrite www.xxx.com}
作者: ayue168    时间: 2017-5-31 15:50
哎呀.好乱. 不懂帮顶/
作者: NoBB    时间: 2017-5-31 15:53
server_name  www.domain.com domain.com;
作者: weilai丶    时间: 2017-5-31 15:54
帮顶
作者: cjf051    时间: 2017-5-31 15:55
ayue168 发表于 2017-5-31 15:49
有证书的443的 server_name写的是 www.xxx.com的话你就在写一个 server{listen 443; rewrite www.xxx.com} ...

再写一个server就不跳了
作者: cjf051    时间: 2017-5-31 15:56
NoBB 发表于 2017-5-31 15:53
server_name  www.domain.com domain.com;

加了,http跳,https不跳
作者: 冻猫    时间: 2017-5-31 15:57
https的要写在下面那个server 443端口里面啊。你写80端口这里肯定不会跳转。
作者: cjf051    时间: 2017-5-31 16:03
冻猫 发表于 2017-5-31 15:57
https的要写在下面那个server 443端口里面啊。你写80端口这里肯定不会跳转。

写在那里的话能跳,但是提示重定向太多,无法访问了
作者: aboutyj    时间: 2017-5-31 16:03
本帖最后由 aboutyj 于 2017-5-31 16:05 编辑

如下:但是我想说,谁TM会闲的蛋疼https://domain.com这样去访问啊?这么有空去手输https://?习惯的都是直接在地址栏输domain.com这样吧?然后浏览器自动补齐成http://domain.com然后跳转

  1. vim /your-conf-path/your-conf.conf

  2. server {
  3.     listen 80;
  4.     server_name domain.com;
  5.     return 301 https://www.domain.com$request_uri;
  6. }

  7. server {
  8.     listen 80;
  9.     server_name www.domain.com;
  10.     return 301 https://www.domain.com$request_uri;
  11. }

  12. server {
  13.     listen 443 ssl;
  14.     server_name domain.com;
  15.     ssl_certificate /your-sslca-path/domain.crt;
  16.     ssl_certificate_key /your-sslca-path/domain.key;
  17.     return 301 https://www.domain.com$request_uri;
  18. }

  19. server {
  20.     listen 443 ssl;
  21.     server_name www.domain.com;
  22.     charset utf-8;

  23.     ssl on;
  24.     ssl_certificate /your-sslca-path/domain.crt;
  25.     ssl_certificate_key /your-sslca-path/domain.key;
  26.     ssl_session_timeout  60m;
  27.     ssl_protocols  SSLv2 SSLv3 TLSv1;
  28.     ssl_ciphers  ALL:!ADH:!EXPOR***56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  29.     ssl_prefer_server_ciphers   on;
  30.     add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";

  31.     location / {
  32.         ......
  33.     }
  34. ......
  35. }
复制代码

作者: 菊部紧张    时间: 2017-5-31 16:09
我自己用的你看看,我直接lnmp生成的改的
  1. server
  2.         {  
  3.     listen 80;  
  4.     server_name www.domain.com domain.com;  
  5.     rewrite ^(.*)$  https://www.domain.com/$1 permanent;  
  6.         }  

  7. server
  8.     {
  9.         #listen 80;
  10.         #listen [::]:80;
  11.                 listen 443;
  12.                
  13.                 ssl on;
  14.                 ssl_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem;
  15.                 ssl_certificate_key /etc/letsencrypt/live/www.domain.com/privkey.pem;
  16.                 ssl_trusted_certificate /etc/letsencrypt/live/www.domain.com/root_ca_cert_plus_intermediates;
  17.                 ssl_session_timeout  5m;

  18.         server_name www.domain.com domain.com;
  19.         index index.html index.htm index.php default.html default.htm default.php;
  20.         root  /home/wwwroot/domain.com;

  21.                 if ($host = 'domain.com')
  22.                 {
  23.            rewrite ^/(.*)$ https://www.domain.com/$1 permanent;
  24.         }

  25.         include wordpress.conf;
  26.         #error_page   404   /404.html;
  27.         include enable-php.conf;
  28.                
  29.         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  30.         {
  31.             expires      30d;
  32.         }

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

  37.         location ~ /\.
  38.         {
  39.             deny all;
  40.         }

  41.         access_log  /home/wwwlogs/domain.com.log;
  42.     }
复制代码

作者: 朔月    时间: 2017-5-31 16:35
  1. server {
  2.   listen 80;
  3.   listen 443 ssl;
  4.   ssl_certificate crt;
  5.   ssl_certificate_key key;
  6.   add_header Strict-Transport-Security max-age=15768000;
  7.   server_name www.domain.com domain.com;
  8.   index index.html index.htm index.php;
  9.   root /domain.com;
  10.   if ($ssl_protocol = "") { return 301 https://$server_name$request_uri; }
复制代码


直接写在一个server里面。把你的80和443
作者: cjf051    时间: 2017-5-31 17:06
aboutyj 发表于 2017-5-31 16:03
如下:但是我想说,谁TM会闲的蛋疼https://domain.com这样去访问啊?这么有空去手输https://?习惯的都是直 ...

可以了,感谢!!
作者: weilai丶    时间: 2017-5-31 18:31
朔月 发表于 2017-5-31 16:35
直接写在一个server里面。把你的80和443

大佬,我用你这个可以跳https,不过和楼主情况一样,https好像跳不了!
作者: yipai    时间: 2017-5-31 19:38
哪用那么麻烦,直接用dns服务商的301跳转功能 把不带www的跳转到带www的域名上就好
作者: yockii    时间: 2017-6-1 06:30
网页文件跳转




欢迎光临 全球主机交流论坛 (https://fd.vvwvv.eu.org/) Powered by Discuz! X3.4