【Nginx】Ubuntu下安裝配置Nginx
一、安裝和解除安裝:
安裝:
apt-get install software-properties-common
add-apt-repository ppa:nginx/stable
apt-get update
apt-get install nginx
解除安裝:
解除安裝方法一
apt-get remove nginx # 刪除nginx,保留配置檔案
rm -rf /etc/nginx #刪除配置檔案
解除安裝方法二
方法二沒有嘗試過,是從網上搜的,順便記錄
#刪除nginx連帶配置檔案
apt-get purge nginx
其他操作(啟動,檢查狀態,停止)
尋找安裝目錄
安裝完時,介面會給予提示安裝在哪的,如果不小心關了,或者刷屏了,可以搜尋一下
#方法一
whereis nginx
#方法二
find / -name nginx
啟動nginx
尋找到安裝目錄後(我的是/usr/sbin/nginx),通過cd切換到nginx安裝目錄下,然後鍵入命令回車,執行瞬間完成(我這發現看不到任何提示資訊)
nginx
啟動nginx可能發生的錯誤:
1.nginx.conf配置異常,此時會提示你配置檔案哪一行發生錯誤
2.nginx偵聽的埠被其他應用佔用了,比如tomcat啟動起來後(預設埠8080),你用nginx去偵聽8080便會提示衝突
檢查nginx狀態
輸入以下指令
nginx -t #檢測配置檔案是否正確
預設安裝完應該是正常的,如果狀態正常提示:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果發生狀態錯誤,會進行相應提示,常見的配置錯誤:
1.增加配置資訊時候,忘記在結尾加分號
2.埠衝突,在配置檔案中增加了兩個server{}配置資訊,listen 相同的埠
修改nginx.conf
使用vim進行修改,修改完後記得使用上面的nginx -t命令進行檢查是否ok,如果狀態ok後進行重啟nginx
vim nginx.conf
停止nginx
鍵入如下命令進行停止
nginx -s stop
以上操作可以順利幫你在ubuntu上安裝或解除安裝nginx,最後,可以在瀏覽器中訪問域名或地址來驗證是否安裝,如果你看到網頁上返回:Welcome to nginx!
恭喜你!
二、nginx功能
這裡先不說nginx功能問題,後面有空再補上
三、nginx常規配置
同上,先不說nginx配置問題,以後補上,網上也一大堆
四、通過nginx進行多專案訪問
第一次接觸nginx,接觸原因是:我伺服器上需要部署python開發的專案,還有java開發的專案,由於部署容器不一樣,並且各個容器預設埠也不一樣。我想要解決的問題就是:通過域名(或域名/專案名)來訪問專案,而不考慮埠的事情,都用80埠來訪問不同埠下的專案。至於我這個需要是否還有別的方法暫時沒有研究,但誤打誤撞野路子上發現了nginx,所以試著用它來解決我的這個問題。
方案一:
採用location配置
1.用vim開啟nginx.conf,增加server域,如果有了你要監聽的埠的server,那麼改動server即可;如果沒有想監聽的埠,則在根節點下新建。
server{
#...
#server相應的配置
#...
}
2.新建完後在listen 後配置你要監聽的埠,本文監聽的80埠,也是最常用的
server{
listen 80; #別忘了加分號
#server其他配置
}
3.設定server_name 他的值是一個域名或者ip地址,一般是nginx安裝服務(這點我不能確定,我這裡的需求是用的我的安裝伺服器地址)
server{
listen 80; #別忘了加分號
server_name www.codist.cn ;
#server其他配置
}
4.在server下增加代理,比如我tomcat下有專案zrlog、jlwy、lover三個專案,python專案有booknote,那麼我增加四個,訪問路徑可以是正則,也可以是具體字串,proxy_pass 的值表示當用戶要請求這個路徑時,轉交給指定的工程去處理(不知道理解有問題沒,如果有問題多多指教)
server{
listen 80; #別忘了加分號
server_name www.codist.cn ; #ip或者域名 一般是nginx安裝伺服器
#server其他配置
location /zrlog{ #訪問路徑可以是正則
proxy_pass http://域名或ip地址:埠/zrlog;
#location其他配置
}
location /jlwy{
proxy_pass http://域名或ip地址:埠/jlwy;
#location其他配置
}
location /lover{
proxy_pass http://域名或ip地址:埠/lover;
#location其他配置
}
location /booknote{
proxy_pass http://域名或ip地址:埠/booknote;
#location其他配置
}
}
如果你只想通過域名訪問不拼接任何東西,location使用 /進行匹配,需要注意的是proxy_pass對映的url必須本身就是tomcat的根專案(根專案的配置可以通過替換ROOT檔案或者修改server.xml來設定)
location / {
proxy_pass http://域名或ip地址:埠;
}
這個時候配置完成,檢查配置狀態是否ok,ok的話重啟nginx,然後呼叫在瀏覽器上進行訪問
www.codist.cn/zrlog、www.codist.cn/jlwy、www.codist.cn/lover、www.codist.cn/booknote,發現進入了相應的web頁面裡
(上述四個地址不用試了,因為codist.cn這個域名還不能用,只是示意一下)
5.如果需要進行負載均衡,則新建一個upstream (這裡取得mysvr),將proxy_pass配置由上面的具體地址改為http://mysvr;即可,如下配置,如果你訪問www.codist.cn/testproject時,該請求就會交由mysvr下配置的這些伺服器,並按照一定規則(負責均衡策略)指定到某一臺具體的伺服器上。
#設定負載均衡的伺服器列表,負載均衡的策略有以下五種,根據需求選擇:
#1.輪詢(預設)
#2.weight
#3.ip_hash(解決session共享)
#4.fair(第三方)
#5.url_hash(第三方)
upstream mysvr{
server 地址:埠 down; #down表示該伺服器不參與負載
server 地址:埠 weight=2;#weight預設為1,值越大,負載的權重就越大
server 地址:埠 backup;#其他所有的非backup機器down或者忙的情況下,就來請求backup機器,該伺服器壓力最小
}
server{
listen 80; #別忘了加分號
server_name www.codist.cn ; #ip或者域名 一般是nginx安裝伺服器
#server其他配置
location /testproject{ #訪問路徑可以是正則
proxy_pass http://mysvr;
#location其他配置
}
}
方案二
採用rewrite重定向
#格式如下:
rewrite <需要匹配的正則> <重定向的路徑> <review支援標記>
#例如
rewrite /$ http://www.codist.cn:8080/zrblog permanent;
#review支援標記如下:
last #本條規則匹配完成後,繼續向下匹配新的location URI規則
break #本條規則匹配完成即終止,不再匹配後面的任何規則
redirect #返回302臨時重定向,瀏覽器地址會顯示跳轉後的URL地址
permanent #返回301永久重定向,瀏覽器位址列會顯示跳轉後的URL地址
五、寫在最後
本人對nginx並不瞭解,文中如有我理解錯誤或使用錯誤的地方,希望能提出糾正,謝謝