代理 http
本次實(shí)驗(yàn)后端為 geoserver
如下就可以實(shí)現(xiàn)基礎(chǔ)的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
實(shí)現(xiàn)負(fù)載均衡
后端兩個(gè)geoserver 服務(wù)器
配置:
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 安裝的模塊信息可以執(zhí)行 nginx 腳本-V 選項(xiàng)查看
[root@localhost sbin]# ./nginx -V
創(chuàng)建自建證書
在nginx 安裝目錄下創(chuàng)建一個(gè)ssl目錄
[root@localhost ~]# mkdir /usr/local/nginx/ssl
在ssl目錄里執(zhí)行下面命令創(chuàng)建自簽名證書
[root@localhost ssl]#openssl genrsa -out ca.key 2048
[root@localhost ssl]#openssl req -new -x509 -key ca.key -out server.crt -days 3650
添加相關(guān)代碼如下
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各步驟操作
詳細(xì)配置如下
stream{
upstream mysql{
#這里代理mysql,其端口是3306
server 10.0.0.7:3306;
}
server {
#監(jiān)聽3306端口
listen 3306;
proxy_pass mysql;
}
#####################################
upstream oracle{
#這里代理oracle,其端口是1521
server 10.0.0.7:1521;
}
server {
#監(jiān)聽1521端口
listen 1521;
proxy_pass oracle;
}
}
nginx 平滑升級
1,當(dāng)前版本查看
[root@localhost sbin]# ./nginx -V
2,解壓新版本安裝包
tar -zxvf nginx-1.20.2.tar.gz
3,進(jìn)入新版安裝包文件
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,進(jìn)入objs 目錄
cd objs/
./nginx -V
7 拷貝啟動文件到老版本nginx的sbin目錄下(將老版本的啟動文件提前備份下)
mv nginx /usr/local/nginx/sbin/
8 ,#檢測一下有沒有問題
[root@localhost sbin]# ./nginx -t
#USR2 平滑升級可執(zhí)行程序,將存儲有舊版本主進(jìn)程ID的文件重命名為nginx.pid.oldbin,跟著啟動新的
nginx
#此時(shí)兩個(gè)master的進(jìn)程都在運(yùn)行,只是舊的master不在監(jiān)聽,由新的master監(jiān)聽80
#此時(shí)Nginx開啟一個(gè)新的master進(jìn)程,這個(gè)master進(jìn)程會生成新的worker進(jìn)程,這就是升級后的Nginx進(jìn)程,此時(shí)老的進(jìn)程不會自動退出,但是當(dāng)接收到新的請求不作處理而是交給新的進(jìn)程處理。
kill -USR2 `cat /usr/local/nginx/tmp/nginx.pid`
ps -auxf | grep nginx
#先關(guān)閉舊nginx的worker進(jìn)程,而不關(guān)閉nginx主進(jìn)程方便回滾
#向原Nginx主進(jìn)程發(fā)送WINCH信號,它會逐步關(guān)閉旗下的工作進(jìn)程(主進(jìn)程不退出),這時(shí)所有請求都會由新版Nginx處理
kill -WINCH `cat /usr/local/nginx/tmp/nginx.pid.oldbin`
ps -auxf | grep nginx
查看當(dāng)前版本是否完成升級文章來源:http://www.zghlxwxcb.cn/news/detail-440401.html
curl -I 127.0.0.1
#經(jīng)過一段時(shí)間測試,新版本服務(wù)沒問題,最后退出老的master文章來源地址http://www.zghlxwxcb.cn/news/detail-440401.html
kill -QUIT `cat /usr/local/nginx/tmp/nginx.pid.oldbin`
ps -auxf | grep nginx
到了這里,關(guān)于Nginx 各種反向代理方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!