具體安裝配置參考之前的文章
@
一,nginx操作的常用命令
使用nginx操作命令的前提條件:必須進入nginx的目錄
/usr/local/nginx/sbin
# 查看nginx版本號
./nginx -v
# 關閉nginx
./nginx -s stop
# 開啟nginx
./nginx
# 重新加載nginx
./nginx -s reload
nginx配置文件
nginx配置文件的位置
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UpyTH3xR-1572243075130)(D:\文件筆記\image\1572228997480.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxMjA4MjYzLnBuZw==.png)
nginx配置文件由三部分組成
-
第一部分,全局塊
- 從配置文件開始到
events塊之間的內容,主要會設置一些影響nginx服務器整體運行的配置指令。 - 比如
word_processes 1;值越大,可以支持的並發處理量也越多。
- 從配置文件開始到
-
第二部分,
events塊events塊設計的指令主要影響nginx服務器與用戶的網絡連接,- 比如
worker_connections 1024;支持的最大連接數。
-
第三部分,
http塊nginx服務器配置中最頻繁的部分http塊也包括http全局塊、server塊。
二,nginx配置反向代理(1)
反向代理的本質目的:當window瀏覽器訪問192.168.186.128並且端口是80時,nginx會轉發到http://127.0.0.1:8080的地址。
首先啟動linux虛擬機中的tomcat(進入tomcat的bin目錄中,執行./startup.sh文件開啟tomcat)
可以訪問到
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jtc3qkCN-1572243075131)(D:\文件筆記\image\1572230412392.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxMjI1MTQ1LnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3dhdGVybWFyayx0eXBlX1ptRnVaM3BvWlc1bmFHVnBkR2ssc2hhZG93XzEwLHRleHRfYUhSMGNITTZMeTlpYkc5bkxtTnpaRzR1Ym1WMEwzZGxhWGhwYmw4ME5EQXdNVGsyTlE9PSxzaXplXzE2LGNvbG9yX0ZGRkZGRix0Xzcw.png)
進入nginx的配置文件中,修改server_name為linux本機的ip地址。
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yXemSW5i-1572243075132)(D:\文件筆記\image\1572231243805.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxMjM5NTIzLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3dhdGVybWFyayx0eXBlX1ptRnVaM3BvWlc1bmFHVnBkR2ssc2hhZG93XzEwLHRleHRfYUhSMGNITTZMeTlpYkc5bkxtTnpaRzR1Ym1WMEwzZGxhWGhwYmw4ME5EQXdNVGsyTlE9PSxzaXplXzE2LGNvbG9yX0ZGRkZGRix0Xzcw.png)
這樣子配置以后,當window瀏覽器訪問192.168.186.128並且端口是80時,nginx會轉發到http://127.0.0.1:8080的地址。
配置完成,還需要重新加載nginx才能生效
cd /usr/local/nginx/sbin 進入sbin目錄
# 執行命令重新加載
./nginx -s reload
然后就實現了nginx反向代理。
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qUzCekr0-1572243075133)(D:\文件筆記\image\1572232234636.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxMjU0MjM3LnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3dhdGVybWFyayx0eXBlX1ptRnVaM3BvWlc1bmFHVnBkR2ssc2hhZG93XzEwLHRleHRfYUhSMGNITTZMeTlpYkc5bkxtTnpaRzR1Ym1WMEwzZGxhWGhwYmw4ME5EQXdNVGsyTlE9PSxzaXplXzE2LGNvbG9yX0ZGRkZGRix0Xzcw.png)
三,nginx配置反向代理(2)
要實現的效果:使用nginx反向代理,根據訪問的路徑不同跳轉到不同的服務端口中。
准備工作:准備兩個tomcat服務器,一個8080端口,一個8081端口。
首先把剛才的tomcat進程殺掉
[root@bogon src]# ps -ef | grep tomcat
root 8298 1 0 22:36 pts/0 00:00:04 /usr/local/java/jdk1.8.0_231/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-7.0.96/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Dignore.endorsed.dirs= -classpath /opt/apache-tomcat-7.0.96/bin/bootstrap.jar:/opt/apache-tomcat-7.0.96/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat-7.0.96 -Dcatalina.home=/opt/apache-tomcat-7.0.96 -Djava.io.tmpdir=/opt/apache-tomcat-7.0.96/temp org.apache.catalina.startup.Bootstrap start
root 8949 2973 0 23:17 pts/0 00:00:00 grep --color=auto tomcat
[root@bogon src]# kill 8298
[root@bogon src]# ps -ef | grep tomcat
root 8957 2973 0 23:18 pts/0 00:00:00 grep --color=auto tomcat
然后在/usr/src目錄下新建兩個文件夾tomcat8080和tomcat8081,使用xftp分別給這兩個文件夾傳入tomcat壓縮包。
如果上傳錯誤就是用命令chmod 777 文件夾名賦予權限就可以了。
分別解壓
tar -xvf apache-tomcat-7.0.96.tar.gz
啟動8080端口的tomcat
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-p8GzNzy8-1572243075134)(D:\文件筆記\image\1572233627026.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxMzA5NzQxLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3dhdGVybWFyayx0eXBlX1ptRnVaM3BvWlc1bmFHVnBkR2ssc2hhZG93XzEwLHRleHRfYUhSMGNITTZMeTlpYkc5bkxtTnpaRzR1Ym1WMEwzZGxhWGhwYmw4ME5EQXdNVGsyTlE9PSxzaXplXzE2LGNvbG9yX0ZGRkZGRix0Xzcw.png)
啟動8081端口的tomcat,解壓之后進入到tomcat的conf目錄中,編輯server.xml配置文件
[root@bogon tomcat8081]# ls
apache-tomcat-7.0.96 apache-tomcat-7.0.96.tar.gz
[root@bogon tomcat8081]# cd apache-tomcat-7.0.96/
[root@bogon apache-tomcat-7.0.96]# ls
bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs NOTICE README.md RELEASE-NOTES RUNNING.txt temp webapps work
[root@bogon apache-tomcat-7.0.96]# cd conf
[root@bogon conf]# ls
catalina.policy catalina.properties context.xml logging.properties server.xml tomcat-users.xml web.xml
[root@bogon conf]# vim server.xml
首先把這個改成8015端口
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2UTcOCgQ-1572243075135)(D:\文件筆記\image\1572234106158.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxMzIxNzczLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3dhdGVybWFyayx0eXBlX1ptRnVaM3BvWlc1bmFHVnBkR2ssc2hhZG93XzEwLHRleHRfYUhSMGNITTZMeTlpYkc5bkxtTnpaRzR1Ym1WMEwzZGxhWGhwYmw4ME5EQXdNVGsyTlE9PSxzaXplXzE2LGNvbG9yX0ZGRkZGRix0Xzcw.png)
再分別改成8081端口和8019端口
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gzk8KkAl-1572243075137)(D:\文件筆記\image\1572234203649.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxMzMzNDM1LnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3dhdGVybWFyayx0eXBlX1ptRnVaM3BvWlc1bmFHVnBkR2ssc2hhZG93XzEwLHRleHRfYUhSMGNITTZMeTlpYkc5bkxtTnpaRzR1Ym1WMEwzZGxhWGhwYmw4ME5EQXdNVGsyTlE9PSxzaXplXzE2LGNvbG9yX0ZGRkZGRix0Xzcw.png)
然后把8081端口的tomcat也啟動起來
[root@bogon bin]# ls
bootstrap.jar catalina-tasks.xml configtest.bat digest.bat setclasspath.sh startup.bat tomcat-native.tar.gz version.bat
catalina.bat commons-daemon.jar configtest.sh digest.sh shutdown.bat startup.sh tool-wrapper.bat version.sh
catalina.sh commons-daemon-native.tar.gz daemon.sh setclasspath.bat shutdown.sh tomcat-juli.jar tool-wrapper.sh
[root@bogon bin]# ./startup.sh
Using CATALINA_BASE: /usr/src/tomcat8081/apache-tomcat-7.0.96
Using CATALINA_HOME: /usr/src/tomcat8081/apache-tomcat-7.0.96
Using CATALINA_TMPDIR: /usr/src/tomcat8081/apache-tomcat-7.0.96/temp
Using JRE_HOME: /usr/local/java/jdk1.8.0_231
Using CLASSPATH: /usr/src/tomcat8081/apache-tomcat-7.0.96/bin/bootstrap.jar:/usr/src/tomcat8081/apache-tomcat-7.0.96/bin/tomcat-juli.jar
Tomcat started.
創建文件夾和測試頁面,做測試的准備工作。
分別在兩個tomcat的webapps文件夾中新建文件夾;
在8080端口的tomcat的webapps中新建文件夾edu,在edu中新建html文件<h1>8080端口</h1>;
在8081端口的tomcat的webapps中新建文件夾vod,在vod中新建html文件<h1>8081!!</h1>;
然后分別在windows瀏覽器訪問

找到nginx配置文件,進行反向代理的配置
[root@bogon vod]# cd /usr/local/nginx/conf
[root@bogon conf]# ls
fastcgi.conf fastcgi_params koi-utf mime.types nginx.conf scgi_params uwsgi_params win-utf
fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf.default scgi_params.default uwsgi_params.default
[root@bogon conf]# vim nginx.conf
添加一下配置
說明:監聽192.168.186.128:9001地址,如果后面路徑是edu,轉發到http://127.0.0.1:8080地址;如果后面地址vod,則轉發到http://127.0.0.1:8081地址。
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PVLth4pP-1572243075139)(D:\文件筆記\image\1572239640330.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxNDM3MS5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS93YXRlcm1hcmssdHlwZV9abUZ1WjNwb1pXNW5hR1ZwZEdrLHNoYWRvd18xMCx0ZXh0X2FIUjBjSE02THk5aWJHOW5MbU56Wkc0dWJtVjBMM2RsYVhocGJsODBOREF3TVRrMk5RPT0sc2l6ZV8xNixjb2xvcl9GRkZGRkYsdF83MA==.png)
然后重新加載nginx,進到/usr/local/nginx/sbin目錄
# 先關掉nginx
./nginx -s stop
# 再開啟nginx
./nginx
測試:在windows瀏覽器中訪問

nginx反向代理就完成了。
四,nginx配置負載均衡
實現效果:瀏覽器地址欄輸入http://192.168.186.128/edu/a.html,負載均衡效果,平均到8080端口和8081端口中。
准備工作:
- 兩台tomcat服務器,一個8080端口,一個8081端口,上面已經准備過了。
- 在兩台
tomcat的webapps目錄中分別都創建edu文件夾,在edu文件夾中新建a.html文件 - 在nginx的配置文件中進行負載均衡的配置
負載均衡配置
在下面的位置添加以下配置。
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eaAiJtbc-1572243075140)(D:\文件筆記\image\1572241230817.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxNTE2OC5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS93YXRlcm1hcmssdHlwZV9abUZ1WjNwb1pXNW5hR1ZwZEdrLHNoYWRvd18xMCx0ZXh0X2FIUjBjSE02THk5aWJHOW5MbU56Wkc0dWJtVjBMM2RsYVhocGJsODBOREF3TVRrMk5RPT0sc2l6ZV8xNixjb2xvcl9GRkZGRkYsdF83MA==.png)
在server{}中再加入以下規則
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7LgV8V7n-1572243075140)(D:\文件筆記\image\1572241450715.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxNTI3NDUzLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3dhdGVybWFyayx0eXBlX1ptRnVaM3BvWlc1bmFHVnBkR2ssc2hhZG93XzEwLHRleHRfYUhSMGNITTZMeTlpYkc5bkxtTnpaRzR1Ym1WMEwzZGxhWGhwYmw4ME5EQXdNVGsyTlE9PSxzaXplXzE2LGNvbG9yX0ZGRkZGRix0Xzcw.png)
測試:在window瀏覽器進行訪問
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VmH0Jeom-1572243075141)(D:\文件筆記\image\1572241732938.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxNTQwMTU0LnBuZw==.png)
刷新以下瀏覽器,會訪問8081端口的tomcat,一直刷新一直在切換。
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-F3IESd8w-1572243075142)(D:\文件筆記\image\1572241755411.png)]](/image/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzIwMTkxMDI4MTQxNTQ5NzIxLnBuZw==.png)
這說明nginx把多次請求平均分攤到不同的服務器中,實現了負載均衡。
nginx負載均衡的分配服務器策略
第一種:輪詢
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
第二種:weight權重
weight代表權重,默認是1,權重越高被分配的客戶端越多。
upstream myserver {
server 192.168.186.128:8080 weight=5;
server 192.168.186.128:8080 weight=10;
}
第三種:ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問要給后端服務器,可以解決session共享的問題(單點登錄會遇到這個問題)。
upstream myserver {
ip_hash;
server 192.168.186.128:8080;
server 192.168.186.128:8080 ;
}
第四種:fair(第三方)
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream myserver {
server 192.168.186.128:8080;
server 192.168.186.128:8080 ;
fair;
}
