Nginx 中 return 和 rewrite 跳转

 

目录

1.return 跳转

2.rewrite 跳转


如果把https的s去掉,就相当于去访问80端口了,https默认找的是443端口,而80端

口对应的网站我们设置了默认网站,所以如果你删掉了s再访问,就看到我们的默认网站了

 我们想要的效果是,输入 http://www.baidu.com ,可以自动访问 https://www.baidu.com

这个效果就需要对配置文件进行修改

1.return 跳转

来到我的网站配置目录下

 cd /etc/nginx/conf.d/

 然后对www.fly.top.conf 配置文件进行修改,增加以下的 server 段

server {
      access_log off; # 这段配置是专门用来做跳转用的,所以日志就不用记录了,off就是关闭跳转行为的日志记录
      listen       80;
      server_name www.fly.top;
      location / {
          return       302 https://www.fly.top$request_uri; # 当用户访问 www.fly.top的80端口时,自动跳转到https网址。
# $request_uri的意思是网址uri,这个访问http://www.wulaoban.top网址后面不管加什么内容,不管访问哪个页面路径,都直接跳转到https
# URL: 协议(http/https):// + 主机(ip/域名) + 端口(80/443) + uri(/xx/index.html或者/xx/xx.jpg等)
      }
}

2.rewrite 跳转

#使用rewrite跳转
server {
      access_log off;
      listen       80;
      server_name www.fly.top;
      location / {
          rewrite ^/(.*) https://www.fly.top/$1 redirect;  # redirect代表
302状态码,临时跳转,^代表网址https://www.fly.top,/(.*)其实就是匹配uri,$1表示()中
匹配到的内容,也就是.*匹配到的内容
        # rewrite ^/(.*) https://www.fly.top/$1 permanent; # permanent代表
301状态码,永久跳转
      }
}

静态 ip 的这个 NAT 模式的虚拟机不能上网因,是被 NetworkManager 给干扰

# 在CentOS中有NetworkManager和network两种网络管理工具,如果这两种服务都工作时会产生冲突进而
导致机器无法联网。
systemctl stop NetworkManager
systemctl disable NetworkManager

# 再重启网卡
systemctl restart network

route -n # 看到有网关了。

配置额外的跳转

server {
       listen       80;
       server_name www.fly.top;
       location / {
           return       302 https://www.fly.top$request_uri;
       }
}
server {
       listen       80;
       server_name fly.top;  # 用户输入不带www的时候也能跳转到https的网址上
       location / {
           return       302 https://www.fly.top$request_uri;
       }
}

你可能感兴趣的:(Ngnix,nginx,服务器)