分布式 - 服务器Nginx:一小时入门系列之 return 指令

文章目录

      • [1. return 指令语法](#1. return 指令语法)
      • [2. return code URL 示例](#2. return code URL 示例)
      • [3. return code text 示例](#3. return code text 示例)
      • [4. return URL 示例](#4. return URL 示例)

1. return 指令语法

return指令用于立即停止当前请求的处理,并返回指定的HTTP状态码和响应头信息,它可以用于在Nginx中生成自定义错误页面,或者在Nginx中重定向到另一个URL,它的语法如下:

nginx 复制代码
return code URL
return code text
return code
return URL

其中,code 是 HTTP 状态码,可以是 2xx、3xx、4xx 或 5xx 等。text 是可选的文本信息,用于在响应中返回一些额外的信息。以下是一些示例:

nginx 复制代码
# 返回 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 临时重定向

2. return code URL 示例

启动监听8088端口的ruoyi-admin服务器,启动监听8080端口的tomcat服务器:

nginx 复制代码
# 启动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

nginx 复制代码
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

nginx 复制代码
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地址。

因此下面的写法是错误的:

nginx 复制代码
server {
    listen 8003;
    server_name ruoyi.loadbalance;

    return 301 https://localhost:8004;
}

③ 重启 Nginx 服务:

nginx 复制代码
[root@nginx-dev ~]# nginx -s reload

④ 测试访问8003端口: http://192.168.1.9:8003

3. return code text 示例

① 配置Nginx服务器监听8007端口

nginx 复制代码
[root@nginx-dev conf.d]# vi 8007.conf
[root@nginx-dev conf.d]# nginx -s reload
nginx 复制代码
server {
    listen 8007;
    server_name ruoyi.loadbalance;
    return 200 "哈哈,大家好,这是一个测试";
}
nginx 复制代码
server {
    listen 8007;
    server_name ruoyi.loadbalance;
    location /test {
        return 200 "哈哈,大家好,这是一个测试";
    }
}

② 测试:

shell 复制代码
[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

哈哈,大家好,这是一个测试

4. return URL 示例

① 配置Nginx服务器监听8007端口

nginx 复制代码
server {
    listen 8007;
    server_name ruoyi.loadbalance;
    
    location /test {
        return https://www.baidu.com;
    }
}

② 页面访问:http://192.168.1.9:8007,会跳转到百度首页。

相关推荐
程序员小凯21 分钟前
Spring MVC 分布式事务与数据一致性教程
分布式·spring·mvc
今麦郎xdu_22 分钟前
【Linux系统】命令行参数和环境变量
linux·服务器·c语言·c++
还不秃顶的计科生25 分钟前
linux下conda未安装的解决方法(离线安装linux下的conda)
linux·运维·服务器
Yeats_Liao29 分钟前
Go语言技术与应用(二):分布式架构设计解析
开发语言·分布式·golang
迎風吹頭髮2 小时前
Linux服务器编程实践26-TCP连接超时重连机制:超时时间计算与重连策略
服务器·网络·php
wanhengidc3 小时前
什么是站群服务器
运维·服务器·网络·游戏·智能手机
2301_768350233 小时前
RabbitMq快速入门程序
分布式·rabbitmq·ruby
筑梦之路4 小时前
深入linux的审计服务auditd —— 筑梦之路
linux·运维·服务器
陈说技术4 小时前
服务器CPU达到100%解决思路
运维·服务器
郝学胜-神的一滴5 小时前
深入解析Linux下的`lseek`函数:文件定位与操作的艺术
linux·运维·服务器·开发语言·c++·软件工程