Nginx 各种反向代理方式

这篇具有很好参考价值的文章主要介绍了Nginx 各种反向代理方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代理 http

本次实验后端为 geoserver
如下就可以实现基础的http反向代理

  server {
        listen       80;
        server_name  192.168.144.100;
        location / {
            proxy_pass http://192.168.144.101:8080;
            add_header backendIP $upstream_addr;
	        add_header backendCode $upstream_status;
	         proxy_set_header    Host $http_host;
	        proxy_set_header   X-Real-IP $remote_addr;
	         proxy_set_header    REMOTE-HOST $remote_addr;
	        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
	         proxy_set_header    X-Forwarded-Host $Server_name;
	         proxy_connect_timeout 30s;
	         proxy_read_timeout 60s;
	         proxy_send_timeout 60s;
	         proxy_buffering off;
            
      
        }

通过页面访问192.168.144.100/geoserver
Nginx 各种反向代理方式

实现负载均衡

后端两个geoserver 服务器
配置:

    upstream geoserver {
      ip_hash;
      server 192.168.144.101:8080;
      server 192.168.144.103:8080;
}
    server {
        listen       80;
        server_name  192.168.144.100;
        location / {
            proxy_pass http://geoserver;
			client_max_body_size 500m; 
			 add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
			 add_header Access-Control-Allow-Headers X-Requested-With;
			add_header backendIP $upstream_addr;
			add_header backendCode $upstream_status;
			proxy_set_header    Host $http_host;
			 proxy_set_header   X-Real-IP $remote_addr;
			proxy_set_header    REMOTE-HOST $remote_addr;
			proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header    X-Forwarded-Host $Server_name;
			proxy_connect_timeout 30s;
			 proxy_read_timeout 60s;
			 proxy_send_timeout 60s;
			proxy_buffering off;
        }
}

nginx 代理 https

https 由Nginx 中-with-http_ssl_module 模块提供
检查nginx 安装的模块信息可以执行 nginx 脚本-V 选项查看

[root@localhost sbin]# ./nginx -V

Nginx 各种反向代理方式
创建自建证书

在nginx 安装目录下创建一个ssl目录
[root@localhost ~]# mkdir  /usr/local/nginx/ssl
在ssl目录里执行下面命令创建自签名证书
[root@localhost ssl]#openssl  genrsa -out ca.key 2048
[root@localhost ssl]#openssl  req -new  -x509 -key  ca.key  -out server.crt  -days 3650

添加相关代码如下

server {
    listen      443 ssl;
    server_name 192.168.144.102;
    ssl_certificate /usr/local/nginx/ssl/server.crt;
    ssl_certificate_key /usr/local/nginx/ssl/ca.key;
    location / {
        proxy_pass https://192.168.144.101:443;
        client_max_body_size 500m;
        add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
         add_header Access-Control-Allow-Headers X-Requested-With;
        add_header backendIP $upstream_addr;
        add_header backendCode $upstream_status;
        proxy_set_header    Host $http_host;
         proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header    REMOTE-HOST $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Host $Server_name;
        proxy_connect_timeout 30s;
         proxy_read_timeout 60s;
         proxy_send_timeout 60s;
        proxy_buffering off;
        }

}

nginx 代理tcp

TCP 代理由–with-stream模块提供,使用tcpd代理需安装此模块
查看是否安装此模块

[root@localhost sbin]# ./nginx -V

Nginx 各种反向代理方式
没有的话,需要手动添加:按照下面平滑升级方式中的前6各步骤操作

详细配置如下

stream{
    upstream mysql{
    #这里代理mysql,其端口是3306
    server 10.0.0.7:3306;
    }
    server {
           #监听3306端口
           listen 3306;
           proxy_pass mysql;
     }
#####################################
upstream oracle{
    #这里代理oracle,其端口是1521
    server 10.0.0.7:1521;
    }
    server {
           #监听1521端口
           listen 1521;
           proxy_pass oracle;
     }

}

Nginx 各种反向代理方式

nginx 平滑升级

1,当前版本查看

[root@localhost sbin]# ./nginx -V

2,解压新版本安装包

tar -zxvf nginx-1.20.2.tar.gz

3,进入新版安装包文件

 cd nginx-1.20.2/

4,初始化 (若是添加新模块,可在后面追加模块名称)

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/usr/local/nginx/tmp/error.log --http-log-path=/usr/local/nginx/tmp/access.log --pid-path=/usr/local/nginx/tmp/nginx.pid --lock-path=/usr/local/nginx/tmp/nginx.lock --with-http_ssl_module
5,编译,不要make install

 make

6,进入objs 目录

  cd objs/
  ./nginx -V

7 拷贝启动文件到老版本nginx的sbin目录下(将老版本的启动文件提前备份下)

  mv nginx /usr/local/nginx/sbin/

8 ,#检测一下有没有问题

[root@localhost sbin]# ./nginx -t

#USR2 平滑升级可执行程序,将存储有旧版本主进程ID的文件重命名为nginx.pid.oldbin,跟着启动新的
nginx
#此时两个master的进程都在运行,只是旧的master不在监听,由新的master监听80
#此时Nginx开启一个新的master进程,这个master进程会生成新的worker进程,这就是升级后的Nginx进程,此时老的进程不会自动退出,但是当接收到新的请求不作处理而是交给新的进程处理。

kill -USR2 `cat /usr/local/nginx/tmp/nginx.pid`
ps -auxf | grep nginx

#先关闭旧nginx的worker进程,而不关闭nginx主进程方便回滚
#向原Nginx主进程发送WINCH信号,它会逐步关闭旗下的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理

kill -WINCH `cat /usr/local/nginx/tmp/nginx.pid.oldbin`
ps -auxf | grep nginx

查看当前版本是否完成升级

curl -I 127.0.0.1

#经过一段时间测试,新版本服务没问题,最后退出老的master文章来源地址https://www.toymoban.com/news/detail-440401.html

kill -QUIT `cat /usr/local/nginx/tmp/nginx.pid.oldbin`
ps -auxf | grep nginx

到了这里,关于Nginx 各种反向代理方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx(4)nginx的反向代理

    正向代理代理的对象是客户端,反向代理代理的是服务端,这是两者之间最大的区别。Nginx即可以实现正向代理,也可以实现反向代理。 先通过一个小案例演示下Nginx正向代理的简单应用,需求如下: (1)服务端的设置:当客户端发送请求之后,需要在指定日志文件里面输出客

    2024年02月03日
    浏览(62)
  • 【Nginx三】——Nginx实现反向代理

    【Nginx一】——Nginx介绍(正向代理 反向代理 负载均衡 动静分离) 【Nginx二】——Nginx常用命令 配置文件 Nginx如何处理请求 本篇博客主要介绍Nginx如何实现反向代理,会进行介绍什么是反向代理,以及进行实例实现反向代理。 代理服务器来接收网络上请求,然后将请求转发

    2024年02月05日
    浏览(63)
  • 深度详解Nginx正向代理与反向代理

    它的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我,从网站的角度

    2024年02月11日
    浏览(49)
  • Nginx代理nginx.conf配置——反向代理(对WebSocket支持)

    基于Nginx代理nginx.conf配置——反向代理,如果要添加websocket支持,需要进行如下配置 在http中添加一下配置,添加对websocket支持 配置后重新运行nginx后,websocket即可成功代理。 注意防火墙端口是否开放、nginx如果使用docker,其对应的端口是否映射出来。

    2024年02月13日
    浏览(38)
  • Nginx(一)介绍Nginx、正向代理和实现反向代理的两个实例

    中国Nginx官网:https://www.nginx-cn.net/ GitHub地址:https://github.com/nginxinc/ 客户端想访问tomcat服务器,只需要访问ww.baidu.com。对真实的服务器IP是隐藏的 1、反向代理实例一(反向代理,访问www.123.com) 步骤一:修改主机映射“C:WindowsSystem32driversetchosts” 步骤二:修改Nginx中的配

    2024年02月08日
    浏览(47)
  • Nginx反向代理详解

    当你需要通过 Nginx 来代理自己的端口时,你就像打开了一扇大门,让你的应用程序能够以更安全、更高效的方式与外部世界进行通信。Nginx 是一个强大的开源反向代理服务器,它可以帮助你实现负载均衡、缓存加速、SSL 终止和许多其他功能。 在本篇博客中,我将向你展示如

    2024年01月23日
    浏览(43)
  • Nginx 反向代理负载均衡

    Nginx 反向代理负载均衡 普通的负载均衡软件,如 LVS,其实现的功能只是对请求数据包的转发、传递,从负载均衡下的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户;而反向代理就不一样了,反向代理服务器在接收访问用户请求后,会代理用户

    2024年02月03日
    浏览(51)
  • nginx-反向代理缓存

    反向代理缓存相当于自动化动静分离。 将上游服务器的资源缓存到nginx本地,当下次再有相同的资源请求时,直接讲nginx缓存的资源返回给客户端。 本地缓存资源有一个过期时间,当超过过期时间,则重新向上游服务器重新请求获取资源。 这样减轻了上游服务器的资源请求负

    2024年02月09日
    浏览(33)
  • MinIO + Nginx 反向代理

    当我们在构建个人博客或网站时,为了提高资源访问的速度和稳定性,经常会使用对象存储服务,如 MinIO,来存储静态资源,例如图片。而为了让网站看起来更加专业和美观,我们通常不希望用户直接看到后端存储的地址和端口,这时就可以利用 Nginx 进行反向代理,隐藏真实

    2024年02月13日
    浏览(51)
  • Docker Nginx 反向代理

    最近在系统性梳理网关的知识,其中网关的的功能有一个是代理,正好咱们常用的Nginx也具备次功能,今天正好使用Nginx实现一下反向代理,与后面网关的代理做一个对比,因为我使用的docker安装的Nginx,与直接部署Nginx不太一样正好记录下遇到的问题,希望可以帮助到学习的

    2023年04月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包