Nginx转发代理请求(http)+转发mysql(stream)

Nginx转发代理请求(http)+转发mysql(stream)

码农世界 2024-05-28 后端 69 次浏览 0个评论

1.Nginx能处理的不同类型模块

1.1 http 模块

  • http 模块用于处理 HTTP 和 HTTPS 协议的请求和响应,通常用于构建 Web 服务器和反向代理服务器。
  • 通过 http 模块配置的服务可以处理 Web 浏览器发起的 HTTP 请求,并向客户端提供 Web 页面、静态资源、API 接口等内容。
  • 在 http 块内部可以配置各种 HTTP 相关的指令,如监听端口、设置服务器名称、定义虚拟主机、配置请求处理、设置缓存、负载均衡等。

    1.2 stream 模块

    • stream 模块用于处理 TCP 和 UDP 等传输层协议的请求和响应,通常用于构建网络代理、负载均衡器、TCP/UDP 代理等。
    • 通过 stream 模块配置的服务可以在传输层上转发请求和响应数据,而不需要解析应用层的协议内容。
    • 在 stream 块内部可以配置 TCP 或 UDP 代理、负载均衡、健康检查等。
    • 常用于处理数据库连接、邮件传输等。

      1.3 mail 模块

      • mail 模块用于处理邮件服务相关的流量,例如 SMTP、POP3、IMAP 等邮件协议。
      • 通过 mail 模块配置的服务可以用作邮件代理、反向代理等。

        1.4 upstream 模块:

        • upstream 模块用于配置后端服务器集群,实现负载均衡和故障转移。
        • 通过 upstream 模块配置的服务器集群可以用于 HTTP、stream 或 mail 模块。

          1.5 security 模块:

          • security 模块提供了一些安全相关的功能,如防止恶意请求、拒绝服务攻击防护等。

            1.6 limit_conn 模块:

            • limit_conn 模块用于限制客户端的并发连接数。

              1.7 limit_req 模块:

              • limit_req 模块用于限制客户端的请求速率。

                1.8 ssl 模块:

                • ssl 模块用于配置 HTTPS 协议相关的参数,包括 SSL 证书、加密算法等。

                  1.9 gzip 模块:

                  • gzip 模块用于启用压缩功能,减少传输数据量,提高性能。

                    1.10 proxy 模块:

                    • proxy 模块用于配置反向代理,将请求转发给后端服务器。

                      2.HTTP

                              系统重装,导致之前的minio没了,新的minio迁移到了一个容量大的服务器,为了不更改太多之前的项目,直接用Nginx将请求之前minio的请求转发到新的服务器 

                      http {    
                          server {
                      		listen       xxxx;
                      		server_name  localhost;
                      		client_max_body_size 10M;
                      		autoindex    on;
                      		#charset koi8-r;
                      		access_log  logs/host.access.log;
                      		location /upload {
                      			proxy_set_header X-Real-IP $remote_addr;
                      			proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
                      			proxy_set_header Host $http_host;
                      			proxy_set_header X-Nginx-Proxy true;
                      			proxy_pass   http://xxx:xxx/;
                      		}
                      	}
                      }
                      • listen xxxx;:指定了 Nginx 服务器监听的端口号为 xxxx。这意味着该服务器块将处理发送到本地主机(localhost)的端口 xxxx的所有传入 HTTP 请求。

                      • server_name localhost;:指定了服务器的名称为 localhost。这意味着该服务器块将处理发送到本地主机名为 localhost 的所有传入 HTTP 请求。实际上,这是一个简单的示例,你可以将其替换为你实际使用的域名或者服务器名。

                      • client_max_body_size 10M;:限制了客户端请求体的最大大小为 10MB。如果客户端上传的请求体超过这个大小,Nginx 将返回 413 请求实体过大错误。

                      • autoindex on;:启用了自动索引功能。当请求的 URI 为一个目录时,Nginx 将列出该目录下的文件列表。

                      • access_log logs/host.access.log;:指定了访问日志的路径。这将记录发送到该服务器块的请求信息。

                      • location /upload { ... }:定义了一个名为 /upload 的位置块。这意味着当客户端请求的 URI 以 /upload 开头时,Nginx 将根据这个位置块的配置进行处理。

                      • proxy_set_header 指令:这些指令设置了传递给后端服务器的一些 HTTP 头信息。例如,proxy_set_header X-Real-IP $remote_addr; 设置了 X-Real-IP 头为客户端的真实 IP 地址。

                      • proxy_pass http://xxx:xxx/;:指定了代理服务器的地址。这个地址指定了请求应该转发到的后端服务器的地址。在这个例子中,请求将被代理到了 xxx:xxx地址。

                        综上所述,这个配置将监听在端口 xxxx上,当客户端请求的 URI 以 /upload 开头时,将请求转发到了后端服务器 xxx:xxx上。 

                        3.Stream

                        stream {        
                                upstream mysql {
                                    server localhost:3306;
                                 }
                                server {
                                    listen xxxx;
                                    proxy_connect_timeout 10s; 
                                    proxy_timeout 30s;
                                    proxy_pass mysql;
                                }
                        }
                        • upstream mysql:

                          upstream 指令定义了一个后端服务器组,这里命名为 mysql

                          通过 server 指令指定了 MySQL 服务器的地址和端口

                        • server 块:

                          server 块定义了代理服务器的配置

                          listen 指令指定了代理服务器监听的端口号

                          proxy_connect_timeout 指令定义了连接到后端服务器的超时时间为 10 秒

                          proxy_timeout 指令定义了从后端服务器接收响应的超时时间为 30 秒

                          proxy_pass 指令将接收到的流量转发到定义的 upstream 块中的后端服务器组,这里指定的是 mysql

转载请注明来自码农世界,本文标题:《Nginx转发代理请求(http)+转发mysql(stream)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,69人围观)参与讨论

还没有评论,来说两句吧...

Top