Nginx 反向代理

  • 代理 http
  • 实现负载均衡
  • nginx 代理 https
  • nginx 代理tcp
  • 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,其端口是3306server 10.0.0.7:3306;}server {#监听3306端口listen 3306;proxy_pass mysql;}
#####################################
upstream oracle{#这里代理oracle,其端口是1521server 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 installmake

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

Nginx 各种反向代理方式相关推荐

  1. (转)IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容...

    from :http://www.cnblogs.com/wuyou/p/3455619.html 环境: windows server 2003,IIS6服务器,Tomcat7服务器 域名有几个: ...

  2. Nginx配置反向代理,一篇搞定!

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/zxd1435513775/article/ details/102508463 一.引言 其他话 ...

  3. Nginx之反向代理与负载均衡实现动静分离实战

    Nginx之反向代理与负载均衡实现动静分离实战 什么是反向代理与负载均衡 Nginx仅仅作为Nginx  proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果. 负载均衡指的是 ...

  4. nginx的反向代理以及负载均衡模块的使用

    内容: 1.何为代理 2.nginx的反向代理模块以及使用 3.nginx的负载均衡模块以及使用 一.何为代理 代理,由字面意思可以理解为代为服务的是意思. 代理服务技术是一门很古老的技术,是在互联网 ...

  5. Nginx-从零开始使用nginx实现反向代理及负载均衡

    文章目录 环境说明 安装Nginx 安装必须的依赖库 3个 源码安装 yum安装 安装nginx 启动Nginx 常用操作命令 使用非root用户启动nginx 搭建应用 Nginx 做反向代理 + ...

  6. 如何让多端口网站用一个nginx进行反向代理实际场景分析

    前段时间公司要整合服务器资源,刚好趁这次机会将这些乱七八糟的服务器做一次梳理和整合,断断续续一个月迁移完成大概优化掉了1/3的机器,完成之后遇到了一些问题,比如曾今零零散散部署在生产上一些可视化UI: ...

  7. host 端口_如何让多端口网站用一个nginx进行反向代理实际场景分析

    前段时间公司要整合服务器资源,刚好趁这次机会将这些乱七八糟的服务器做一次梳理和整合,断断续续一个月迁移完成大概优化掉了1/3的机器,完成之后遇到了一些问题,比如曾今零零散散部署在生产上一些可视化UI: ...

  8. Windos环境用Nginx配置反向代理和负载均衡

    Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...

  9. nginx之反向代理配置

    参数用nginx进行反向代理,我这边的有好几个系统,都是不同的IP和端口.我希望在外部访问的时候,是同一个IP和端口.这样可以解决跨域的问题, 结构图: 通过每个系统的网址可以直接访问,另外,我们通过 ...

最新文章

  1. SharePoint2010 修改模板页在网页中间显示网站内容
  2. Django中的认证与权限 源码剖析
  3. JEECG V3.0 版本(jbpm5 工作流自定义+WEB UI快速开发库+代码生成器) spring mvc +hibernate
  4. BI软件应用在哪些方面
  5. 海航通信启动通信+大数据战略 海航宽带首次发布
  6. IDEA下载主题、修改主题、删除主题
  7. numpy 矩阵运算
  8. VM无法获取 vmci 驱动程序版本句柄无效解决办法
  9. 正则表达式 -文书网ktr
  10. Golang验证身份证号码是否有效
  11. php redis 传递闭包,有向图传递闭包 - osc_wff1160a的个人空间 - OSCHINA - 中文开源技术交流社区...
  12. 常见亲脂性细胞膜染料DiO, Dil, DiR, Did光谱图和实验操作流程
  13. 青龙面板拉京东库(7月12号更新)
  14. html怎么实现蓝色垂直的直线,css实例教程 一款纯css实现的垂直时间线效果
  15. ANSYS中vonnbsp;misesnbsp;stres…
  16. iPhone游戏开发
  17. 扁平化设计颜色之翡翠绿
  18. u-boot.lds文件诠释
  19. P2657 [SCOI2009]windy数(数位dp)
  20. Android中的单例模式(java单例模式详解,Glide,EventBus,LayoutInfalter的源码单例模式详解)

热门文章

  1. pandas 提取大于某值的数据_Pandas 数据处理(二) - 筛选数据
  2. 对C#装箱和拆箱的理解
  3. Mac快速查看文件路径并复制
  4. 计算机图形学有很多应用,计算机图形学的论文_计算机图形学有很多应用_计算机科学与技术的论文...
  5. AOS加性算子分裂法
  6. 利用自己的数据包实现点云地图的NDT定位
  7. composer 版本降级
  8. python pandas 数据探索
  9. Word中对一行/页眉同时设置左对齐和右对齐
  10. python生成姓名