首页 > 系统相关 >Nginx 各种反向代理方式_nginx反向代理1

Nginx 各种反向代理方式_nginx反向代理1

时间:2023-12-12 14:36:20浏览次数:32  
标签:set header 代理 server nginx 反向 proxy local

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
在这里插入图片描述

实现负载均衡

后端两个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 安装目录下创建一个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

在这里插入图片描述
没有的话,需要手动添加:按照下面平滑升级方式中的前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 平滑升级

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

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

本文转自 https://blog.csdn.net/qq_42988315/article/details/127057475,如有侵权,请联系删除。

标签:set,header,代理,server,nginx,反向,proxy,local
From: https://www.cnblogs.com/hustshu/p/17896710.html

相关文章

  • Nginx 黑白名单
    Nginx做黑白名单机制,主要是通过allow、deny配置项来实现:allowxxx.xxx.xxx.xxx;#允许指定的IP访问,可以用于实现白名单。denyxxx.xxx.xxx.xxx;#禁止指定的IP访问,可以用于实现黑名单。要同时屏蔽/开放多个IP访问时,如果所有IP全部写在nginx.conf文件中定然是不显示的,这种方式比较......
  • nginx 反向代理实现不同来路IP跳转到不同网站服务器
    http{#定义一个map,将来路IP映射到后端服务器map$remote_addr$backend_server{defaultserver1;192.168.1.1server2;#添加更多的IP地址映射}server{listen80;#使用if语句根据来路IP选择后......
  • Nginx Rewrite
    Nginx RewriteLOCATION常用NGINX正则表达式^:匹配输入字符串的起始位置$:匹配输入字符串的结束位置*:匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”+:匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o”?:匹配前......
  • nginx 安装记录
    可以先更新一下列表:aptupdate安装很简单,直接:aptinstallnginx-y这个步骤直接安装好了不说,还直接将nginx服务给启动起来了。不过这个时候也可以看到其作为systemctl的服务,其路径是处于:/lib/systemd/system/nginx.service的,而非是处于/etc/systemd下的。 它的配置文件......
  • nginx 正则
    坑点ginxlocation正则alias和try_files,存在排斥情况,不能一起使用,要使用root。案例如下#老版本门户前端location^~/assets{alias/usr/share/nginx/homepage_test/assets/;#老版本js、css文件}#nginxlocation正则alias和try_files,存在排斥情......
  • linux下安装nginx
    第一步:压缩包准备压缩包,最好准备一个稳定的版本:下载地址我这边选用的是1.24.0双版本号第二步:解压在相对应的目录下,执行命令:tar-zxvfnginx-1.18.0.tar.gz第三步:配置\编译推荐使用:./configure如有额外的需求执行:./configure--prefix=/usr/local/nginx-1.20.2--with-http_ssl_mo......
  • Socks5代理与代理IP的技术创新
    随着全球市场的开放和跨界电商的崛起,企业在出海过程中面临着复杂多变的网络环境和地域限制。在这一背景下,Socks5代理和代理IP等技术应运而生,成为助力企业突破网络壁垒、实现出海目标的重要工具。本文将深入探讨Socks5代理和代理IP在跨界电商中的技术性创新,以及它们如何推动企业在国......
  • 【APP小程序测试】APP抓包Frida反代理绕过和证书校验绕过
    前期准备逍遥模拟器Burp(抓包)测试APPfridawiresharkr0capture反代理和证书校验绕过解决app证书校验无法抓包问题使用工具:FridaFirda是一款易用的跨平Hook工具,Java层到Native层的Hook无所不能,是一种动态的插桩工具,可以插入代码到原生App的内存空间中,动态的......
  • Web服务器Apache和Nginx的区别
    Apache和Nginx是两种主要Web服务器,Apache和Nginx最核心的区别在于Apache是同步多进程模型,一个连接对应一个进程;而Nginx是异步的,多个连接(万级别)可以对应一个进程。Apache1、apache的rewrite比nginx强大,在rewrite频繁的情况下,用apache2、apache发展到现在,模块超多,基本想......
  • Sermant:无代理服务网格架构解析及无门槛玩转插件开发
    本文分享自华为云社区《Sermant:无代理服务网格架构解析及无门槛玩转插件开发》,作者:华为云社区精选。本期直播的主题是《从架构设计到开发实践,深入浅出了解Sermant》,华为云云原生DTSE技术布道师、华为云高级工程师、Sermant开源社区PMC核心成员栾文飞,为广大开发者详细从架构设计......