return指令用于立即停止当前请求的处理,并返回指定的HTTP状态码和响应头信息,它可以用于在Nginx中生成自定义错误页面,或者在Nginx中重定向到另一个URL,它的语法如下:
return code URL
return code text
return code
return URL
其中,code 是 HTTP 状态码,可以是 2xx、3xx、4xx 或 5xx 等。text 是可选的文本信息,用于在响应中返回一些额外的信息。以下是一些示例:
# 返回 200 OK响应
return 200;
# 返回 404 Not Found 响应,并在响应中包含"Not Found Eroor"文本信息
return 404 "Not Found Eroor";
# 返回301 永久重定向响应,将请求重定向到 https://example.com
return 301 https://example.com$request_uri;
状态码:301 永久重定向,302 临时重定向
启动监听8088端口的ruoyi-admin服务器,启动监听8080端口的tomcat服务器:
# 启动ruoyi-admin服务
[root@nginx-dev conf.d]# cd /home/apps
[root@nginx-dev apps]# java -jar ruoyi-admin.jar
# 启动tomcat服务
[root@nginx-dev ~]# /home/apache-tomcat-8.5.81/bin/startup.sh
① Nginx 配置文件:/etc/nginx/conf.d/8004.conf
server {
listen 8004 ssl;
server_name ruoyi.https;
ssl_certificate /home/server.crt;
ssl_certificate_key /home/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_password_file /home/cert.pass;
location / {
proxy_pass http://localhost:8088;
}
}
Nginx服务器的配置文件,它监听8004端口并使用SSL协议进行加密通信。服务器名称为“ruoyi.https”。SSL证书和密钥文件分别位于“/home/server.crt”和“/home/server.key”。SSL协议版本为TLSv1、TLSv1.1和TLSv1.2,加密算法为HIGH:!aNULL:!MD5。
该配置文件中的“location /”指令将所有请求转发到本地8088端口,即Nginx充当反向代理服务器将所有请求转发到本地的另一个服务器上。
② Nginx 配置文件: /etc/nginx/conf.d/8003.conf
server {
listen 8003;
server_name ruoyi.loadbalance;
return 301 https://192.168.1.9:8004;
}
server 块监听端口号8003,并将请求重定向到 https://192.168.1.9:8004。这里使用了 return 指令,表示直接返回指定的 HTTP 状态码和响应头,不再继续处理后续指令。
转发和重定向都是HTTP协议中常用的跳转方式,它们的作用都是将用户请求从一个URL地址转移到另一个URL地址,但它们的实现方式和效果略有不同。
转发是指在服务器端将用户的请求转发到另一个资源进行处理,转发的过程是服务器内部完成的,对于客户端而言,它并不知道服务器进行了转发操作,因此客户端的URL地址不会发生变化。转发可以保留原始请求的信息,如请求参数、请求头等,因此在某些场景下,转发可以更好地满足业务需求。
重定向是指在服务器端将用户的请求重定向到另一个URL地址,重定向的过程是通过向客户端发送一个HTTP响应,让客户端重新发送一个新的请求到重定向的URL地址。重定向会导致客户端的URL地址发生变化,因此客户端需要重新发起一个新的请求,这会增加一定的网络开销。重定向可以实现URL地址的更改,如将HTTP协议的URL地址重定向到HTTPS协议的URL地址。
因此下面的写法是错误的:
server {
listen 8003;
server_name ruoyi.loadbalance;
return 301 https://localhost:8004;
}
③ 重启 Nginx 服务:
[root@nginx-dev ~]# nginx -s reload
④ 测试访问8003端口: http://192.168.1.9:8003
① 配置Nginx服务器监听8007端口
[root@nginx-dev conf.d]# vi 8007.conf
[root@nginx-dev conf.d]# nginx -s reload
server {
listen 8007;
server_name ruoyi.loadbalance;
return 200 "哈哈,大家好,这是一个测试";
}
server {
listen 8007;
server_name ruoyi.loadbalance;
location /test {
return 200 "哈哈,大家好,这是一个测试";
}
}
② 测试:
[root@nginx-dev conf.d]# curl -i http://192.168.1.9:8007
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Sat, 26 Aug 2023 09:20:19 GMT
Content-Type: application/octet-stream
Content-Length: 39
Connection: keep-alive
哈哈,大家好,这是一个测试
① 配置Nginx服务器监听8007端口
server {
listen 8007;
server_name ruoyi.loadbalance;
location /test {
return https://www.baidu.com;
}
}
② 页面访问:http://192.168.1.9:8007,会跳转到百度首页。