某些情况下需要用到url的重定向或者转发,这时候直接配置nginx会比修改站点文件更方便,以下是重定向与转发的区别:
重定向和转发的区别就是请求服务器几次。如果请求服务器地址没有变,说明这是一次请求,请求在自己的服务器里面流转,这就是转发,这是服务器行为。如果请求服务器地址变了,说明这是请求了二次,第二次请求由客户端浏览器负责,在多台服务器之间流转,这就是客户端行为。
重定向:
- 重定向的速度比较慢,需要跨越服务器
- 重定向是两次不同的请求
- 重定向是执行重定向之后的代码
- 地址栏的地址是会发生变化的
- 重定向不包含项目的根目录
- 重定向是会就是请求域中的数据
# 重定向:xyglxt路径的请求会返回301重定向响应,告知客户端新地址
location /xyglxt {
# 返回301重定向响应,告知客户端请求的新地址
return 301 https://starry0214.one/index.php/2024/06/07/%e6%a0%a1%e5%8f%8b%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e8%ae%be%e8%ae%a1%e8%af%a6%e6%83%85/;
}
转发:
- 转发速度快,不需要跨越服务器,在自己项目的页面之间跳转
- 转发是同一次请求
- 转发是不会执行转发后代码
- 转发地址栏是没有变化的
- 转发是包含项目的根目录的
- 转发请求域中的数据是不会丢失的
# 内容转发:xyglxt路径的请求会转发到目标地址,并返回目标内容给客户端
location /xyglxt {
# 设置请求头Host字段,确保代理请求的目标地址正确
proxy_set_header Host $host;
# 设置客户端的真实IP地址
proxy_set_header X-Real-IP $remote_addr;
# 设置X-Forwarded-For头字段,用于记录代理链条中的客户端IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 设置X-Forwarded-Proto头字段,记录客户端请求的协议(HTTP或HTTPS)
proxy_set_header X-Forwarded-Proto $scheme;
# 将请求转发到目标地址,并返回响应内容
proxy_pass https://starry0214.one/index.php/2024/06/07/%e6%a0%a1%e5%8f%8b%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f%e8%ae%be%e8%ae%a1%e8%af%a6%e6%83%85/;
}