柚子快報激活碼778899分享:運維 Nginx
柚子快報激活碼778899分享:運維 Nginx
Nginx-> 網(wǎng)絡(luò)服務(wù)器
正向代理
正向代理
是一個位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。
客戶端必須要進行一些特別的設(shè)置才能使用正向代理。就像要訪問google用vpn代理翻墻去訪問(用戶知道要訪問真正的服務(wù)器)
nginx的反向代理
什么是反向代理
反向代理
指的是瀏覽器/客戶端并不知道自己要訪問具體哪臺目標(biāo)服務(wù)器,只知道去訪問代理服務(wù)器 ,代理服務(wù)器再通過反向代理 +負(fù)載均衡實現(xiàn)請求分發(fā)到應(yīng)用服務(wù)器的一種代理服務(wù)。
反向代理服務(wù)的特點是代理服務(wù)器 代理的對象是應(yīng)用服務(wù)器,也就是對于瀏覽器/客戶端 來說應(yīng)用服務(wù)器是隱藏的。
以租房為例解釋正向代理和反向代理?
客戶端 <一> 代理 <一>服務(wù)端
A租房人(客戶端),B房產(chǎn)中介(代理),C真實房東(服務(wù)端)
1、正向代理
A租房人(客戶端)想租C真實房東的房子,但不認(rèn)識C真實房東(服務(wù)端)
B房產(chǎn)中介(代理)認(rèn)識C真實房東(服務(wù)端),并且從C真實房東(服務(wù)端)租到了房
A租房人(客戶端)通過B房產(chǎn)中介(代理)租到了C真實房東(服務(wù)端)的房
C真實房東(服務(wù)端)只知道房子租給了B房產(chǎn)中介(代理),并不知道A租房人(客戶端)租了自己的房子
2、反向代理
A租房人(客戶端)要租B房產(chǎn)中介(代理)的房
B房產(chǎn)中介(代理)從C真實房東(服務(wù)端)手里租了A租房人(客戶端)想要租的房
A租房人(客戶端)不知道這套房子真實房東是C真實房東(服務(wù)端)
C真實房東(服務(wù)端)不知道自己的房子被A租房人(客戶端)租住
nginx安裝
首先安裝nginx安裝環(huán)境
第一步
安裝nginx需要先將官網(wǎng)下載的源碼進行編譯,編譯依賴gcc環(huán)境,如果沒有g(shù)cc環(huán)境,需要安裝gcc:
命令:yum install gcc-c++
第二步
PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx的http模塊使用pcre來解析正則表達式,所以需要在linux上安裝pcre庫。
命令:yum install -y pcre pcre-devel
第三步
zlib庫提供了很多種壓縮和解壓縮的方式,nginx使用zlib對http包的內(nèi)容進行g(shù)zip,所以需要在linux上安裝zlib庫。
命令:yum install -y zlib zlib-devel
第四步
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協(xié)議,并提供豐富的應(yīng)用程序供測試或其它目的使用。
nginx不僅支持http協(xié)議,還支持https(即在ssl協(xié)議上傳輸http),所以需要在linux安裝openssl庫。
命令:yum install -y openssl openssl-devel
然后安裝nginx
1、將安裝包上傳到/home,解壓
命令:tar -zxvf nginx-1.8.1.tar.gz
2、自定義創(chuàng)建一個文件夾作為Nginx安裝目錄,這里在home下創(chuàng)建nginx文件夾;
命令:cd /home
命令:mkdir nginx
3、在解壓的目錄(nginx-1.8.1)下執(zhí)行
先輸入命令 : cd /home/nginx-1.8.1
再執(zhí)行 命令 :./configure --prefix=/home/nginx
意思即配置安裝環(huán)境,將會把Nginx安裝到/home/nginx下
4,編譯:在解壓的文件夾(nginx-1.8.1)下先后執(zhí)行make 和 make install 命令
先輸入 make
然后輸入 make install
5、然后進入nginx/sbin目錄下
命令: cd /home/nginx/sbin
執(zhí)行命令:./nginx 啟動nginx
關(guān)閉防火墻
systemctl stop firewalld
或者打開端口
firewall-cmd --add-port=80/tcp --permanent (防火墻關(guān)閉了,不用做這個操作)
在瀏覽器輸入對應(yīng)的ip地址,不用加端口號,因為nginx默認(rèn)是80端口,可以省略,就可以訪問到nginx
nginx常用指令
啟動:
windows
直接點擊Nginx目錄下的nginx.exe 或者 cmd運行start nginx
linux
nginx目錄下,sbin目錄中,./nginx
關(guān)閉
nginx -s stop 或者 nginx -s quit
stop表示立即停止nginx,不保存相關(guān)信息
quit表示正常退出nginx,并保存相關(guān)信息
nginx -s stop 或者 nginx -s quit
nginx -s reload :修改配置后重新加載生效
nginx -s reopen :重新打開日志文件
nginx -t -c /path/to/nginx.conf 測試nginx配置文件是否正確
nginx -s reopen #重啟Nginx
nginx -s reload #重新加載Nginx配置文件,然后以優(yōu)雅的方式重啟Nginx
nginx -s stop #強制停止Nginx服務(wù)
nginx -s quit #優(yōu)雅地停止Nginx服務(wù)(即處理完所有請求后再停止服務(wù))
nginx -t #檢測配置文件是否有語法錯誤,然后退出
nginx -?,-h #打開幫助信息
nginx -v #顯示版本信息并退出
nginx -V #顯示版本和配置選項信息,然后退出
nginx -t #檢測配置文件是否有語法錯誤,然后退出
nginx -T #檢測配置文件是否有語法錯誤,轉(zhuǎn)儲并退出
nginx -q #在檢測配置文件期間屏蔽非錯誤信息
nginx -p prefix #設(shè)置前綴路徑(默認(rèn)是:/usr/share/nginx/)
nginx -c filename #設(shè)置配置文件(默認(rèn)是:/etc/nginx/nginx.conf)
nginx -g directives #設(shè)置配置文件外的全局指令
killall nginx #殺死所有nginx進程
nginx部署圖片服務(wù)器
1,修改配置文件
Nginx默認(rèn)使用端口是80,這里直接先把Nginx端口改為8090
命令:vi /home/nginx/conf/nginx.conf
在42行位置,輸入以下代碼內(nèi)容
location ~ .*\.(gif|jpg|jpeg|png)$ {
expires 24h;
root /home/images/;#指定圖片存放路徑
access_log /home/nginx/logs/images.log;#圖片 日志路徑
proxy_store on;
proxy_store_access user:rw group:rw all:rw;
proxy_temp_path /home/images/;#代理臨時路徑
proxy_redirect off;
proxy_set_header Host 127.0.0.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 1280k;
proxy_connect_timeout 900;
proxy_send_timeout 900;
proxy_read_timeout 900;
proxy_buffer_size 40k;
proxy_buffers 40 320k;
proxy_busy_buffers_size 640k;
proxy_temp_file_write_size 640k;
if ( !-e $request_filename)
{
proxy_pass http://127.0.0.1:8090;#代理訪問地址,和上面的端口一致
}
}
2,重新加載nginx
修改了nginx配置文件后,得重重新啟動一下nginx
切換目錄 命令:cd /home/nginx/sbin
重新加載 命令:./nginx -s reload
3,在/home下,新建一個images目錄
系統(tǒng)一般會自動創(chuàng)建,可以先用 ls /home看看有沒有這個目錄
沒有就創(chuàng)建 : mkdir /home/images
4,上傳幾張圖片到images中
5,再次訪問,加上上面新設(shè)置的端口號,將圖片名稱加在地址后面即可
nginx實現(xiàn)反向代理
1,復(fù)制3個tomcat,分別是
命令 : cd /home
復(fù)制命令 :
cp -r apache-tomcat-9.0.30 ./tomcat-8081
cp -r apache-tomcat-9.0.30 ./tomcat-8082
cp -r apache-tomcat-9.0.30 ./tomcat-8083
分別修改這幾各tomcat對應(yīng)的端口號
用工具找到位置 : /home/tomcat-8081/conf/server.xml
右擊打開,修改端口
tomcat-8081
tomcat-8082
tomcat-8083
2,新建一個test.html,內(nèi)容分別為對應(yīng)端口號的內(nèi)容顯示
第1步:新建一個txt文本,在里面輸入內(nèi)容
這是tomcat-8081
然后保存
第2步:把文檔改名為 test.html
第3步:將test.html這個文件拖到對應(yīng)的三個tomcat中,拖到tomcat-8081/webapps/ROOT中,三個tomcat都拖一個文件
第4步:將test.html的文件內(nèi)容,分別改成和tomcat目錄名稱對應(yīng)的值
3,分別啟動這3個tomcat,保證這3個tomcat都能訪問
分別進入 3個tomcat的bin目錄下,./startup.sh
cd /home/tomcat-8081/bin --> ./startup.sh
cd /home/tomcat-8082/bin --> ./startup.sh
cd /home/tomcat-8083/bin --> ./startup.sh
然后分別加上/test.html去訪問對應(yīng)的test頁面
4,配置nginx
在server的外面加上
upstream tomcat1 {
server 192.168.100.160:8081;
server 192.168.100.160:8082;
server 192.168.100.160:8083;
}
#192.168.100.160 -> http://tomcat1 -> http://192.168.100.160:8081
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcat1;
#配置默認(rèn)訪問頁,這里就會訪問到tomcat1里面的那個index.jsp文件里面
index index.html;
}
}
加完后,保存退出,重新加載nginx
命令:cd /home/nginx/sbin
命令:./nginx -s reload
5,然后在瀏覽器中輸入地址去訪問
http://192.168.100.160/test.html
然后刷新訪問地址,每次訪問的時候都會隨機出現(xiàn)不同的tomcat頁面,這其實就完成了反向代理的使用
6,然后我們還可以重新配置一下,當(dāng)我們訪問指定頁面的時候,只有指定的服務(wù)器可以使用
upstream tomcat1 {
server 127.0.0.1:8081;
}
upstream tomcat2 {
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
server {
listen 80;
server_name localhost;
location /1 {
proxy_pass http://tomcat1;
index index.jsp;
}
location /test.html {
proxy_pass http://tomcat2;
index index.jsp;
}
}
這個時候再次訪問對應(yīng)的地址,發(fā)現(xiàn)只有8082和8083可以訪問我們指定的頁面
負(fù)載均衡
#反向代理+負(fù)載均衡
upstream reverseProxyServer{
#負(fù)載均衡應(yīng)用服務(wù)器A: 權(quán)重為10,10s內(nèi)連接請求失敗2次,nginx在10s內(nèi)認(rèn)為server是不可用的,將不在發(fā)送請求給這臺服務(wù)器
server 應(yīng)用服務(wù)器A的IP:8080 weight=10 max_fails=2 fail_timeout=10s;
#負(fù)載均衡應(yīng)用服務(wù)器B: 代理服務(wù)器權(quán)重為5,10s內(nèi)連接請求失敗2次,nginx在10s內(nèi)認(rèn)為server是不可用的,將不在發(fā)送請求給這臺服務(wù)器
server 應(yīng)用服務(wù)器B的IP:8080 weight=5 fail_timeout=10s max_fails=2;
#負(fù)載均衡應(yīng)用服務(wù)器C: 代理服務(wù)器權(quán)重為5,10s內(nèi)連接請求失敗2次,nginx在10s內(nèi)認(rèn)為server是不可用的,將不在發(fā)送請求給這臺服務(wù)器
server 應(yīng)用服務(wù)器C的IP:8080 weight=5 fail_timeout=10s max_fails=2;
}
server {
#監(jiān)聽80端口,http默認(rèn)端口80
listen 80;
#服務(wù)器IP或域名
server_name localhost;
#反向代理請求路徑中含有/appname的所有請求到upstream定義的對應(yīng)反向代理模塊
location /appname {
proxy_pass http://reverseProxyServer;
}
}
負(fù)載均衡算法常用的有輪詢、權(quán)重和ip_hash算法,默認(rèn)是輪詢算法~
(1)基于輪詢的算法
原理是每一個請求按時間順序逐一被分發(fā)到不同的應(yīng)用服務(wù)器,如果接收請求的應(yīng)用服務(wù)器掛了,并且請求超過最大失敗次數(shù)max_fails(1次),則在失效時間fail_timeout(10秒)內(nèi)不會再轉(zhuǎn)發(fā)請求到該節(jié)點~
upstream defaultReverseProxyServer{
server 192.168.0.1:8080;
server 192.168.0.2:8080;
}
(2)基于權(quán)重的算法
原理是每一個請求按權(quán)重被分發(fā)到不同的應(yīng)用服務(wù)器,同樣,如果接收請求的應(yīng)用服務(wù)器掛了,并且請求超過最大失敗次數(shù)max_fails(默認(rèn)1次或可設(shè)置N次),則在失效時間fail_timeout(默認(rèn)10秒,可設(shè)置N秒)內(nèi),不會再轉(zhuǎn)發(fā)請求到該節(jié)點~
upstream weightReverseProxyServer{
server 192.168.0.1:8080 weight=10 max_fails=2 fail_timeout=5s;
server 192.168.0.2:8080 weight=5 max_fails=2 fail_timeout=5s;
}
(3)基于ip_hash的算法
原理是每一個請求按用戶訪問IP的哈希結(jié)果分配,如果請求來自同一個用戶IP則固定這臺IP訪問一臺應(yīng)用服務(wù)器,該算法可以有效解決動態(tài)網(wǎng)頁中存在的session共享問題。
upstream ipHashReverseProxyServer{
ip_hash;
server 192.168.0.1:8080;
server 192.168.0.2:8080;
}
一般使用的是基于權(quán)重的算法,因為現(xiàn)在很多情況下都是集群部署,而且集群下的各個服務(wù)器資源大多都是不均勻的,資源高的則分配權(quán)重高一些,資源低的則分配權(quán)重低一些,這種情況使用基于權(quán)重的負(fù)載均衡算法,可以更高效的利用資源和提高并發(fā)處理能力~
柚子快報激活碼778899分享:運維 Nginx
推薦閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。