Nginx 各种反向代理方式
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 各种反向代理方式相关推荐
- (转)IIS tomcat共用80端口解决一个IP多个域名:使用Nginx反向代理方式使两者兼容...
from :http://www.cnblogs.com/wuyou/p/3455619.html 环境: windows server 2003,IIS6服务器,Tomcat7服务器 域名有几个: ...
- Nginx配置反向代理,一篇搞定!
欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/zxd1435513775/article/ details/102508463 一.引言 其他话 ...
- Nginx之反向代理与负载均衡实现动静分离实战
Nginx之反向代理与负载均衡实现动静分离实战 什么是反向代理与负载均衡 Nginx仅仅作为Nginx proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果. 负载均衡指的是 ...
- nginx的反向代理以及负载均衡模块的使用
内容: 1.何为代理 2.nginx的反向代理模块以及使用 3.nginx的负载均衡模块以及使用 一.何为代理 代理,由字面意思可以理解为代为服务的是意思. 代理服务技术是一门很古老的技术,是在互联网 ...
- Nginx-从零开始使用nginx实现反向代理及负载均衡
文章目录 环境说明 安装Nginx 安装必须的依赖库 3个 源码安装 yum安装 安装nginx 启动Nginx 常用操作命令 使用非root用户启动nginx 搭建应用 Nginx 做反向代理 + ...
- 如何让多端口网站用一个nginx进行反向代理实际场景分析
前段时间公司要整合服务器资源,刚好趁这次机会将这些乱七八糟的服务器做一次梳理和整合,断断续续一个月迁移完成大概优化掉了1/3的机器,完成之后遇到了一些问题,比如曾今零零散散部署在生产上一些可视化UI: ...
- host 端口_如何让多端口网站用一个nginx进行反向代理实际场景分析
前段时间公司要整合服务器资源,刚好趁这次机会将这些乱七八糟的服务器做一次梳理和整合,断断续续一个月迁移完成大概优化掉了1/3的机器,完成之后遇到了一些问题,比如曾今零零散散部署在生产上一些可视化UI: ...
- Windos环境用Nginx配置反向代理和负载均衡
Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...
- nginx之反向代理配置
参数用nginx进行反向代理,我这边的有好几个系统,都是不同的IP和端口.我希望在外部访问的时候,是同一个IP和端口.这样可以解决跨域的问题, 结构图: 通过每个系统的网址可以直接访问,另外,我们通过 ...
最新文章
- SharePoint2010 修改模板页在网页中间显示网站内容
- Django中的认证与权限 源码剖析
- JEECG V3.0 版本(jbpm5 工作流自定义+WEB UI快速开发库+代码生成器) spring mvc +hibernate
- BI软件应用在哪些方面
- 海航通信启动通信+大数据战略 海航宽带首次发布
- IDEA下载主题、修改主题、删除主题
- numpy 矩阵运算
- VM无法获取 vmci 驱动程序版本句柄无效解决办法
- 正则表达式 -文书网ktr
- Golang验证身份证号码是否有效
- php redis 传递闭包,有向图传递闭包 - osc_wff1160a的个人空间 - OSCHINA - 中文开源技术交流社区...
- 常见亲脂性细胞膜染料DiO, Dil, DiR, Did光谱图和实验操作流程
- 青龙面板拉京东库(7月12号更新)
- html怎么实现蓝色垂直的直线,css实例教程 一款纯css实现的垂直时间线效果
- ANSYS中vonnbsp;misesnbsp;stres…
- iPhone游戏开发
- 扁平化设计颜色之翡翠绿
- u-boot.lds文件诠释
- P2657 [SCOI2009]windy数(数位dp)
- Android中的单例模式(java单例模式详解,Glide,EventBus,LayoutInfalter的源码单例模式详解)