Nginx部署JavaWeb項(xiàng)目全過程
1.什么是Nginx
Nginx是一款輕量級的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like 協(xié)議下發(fā)行。
其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好。
2.Nginx 架構(gòu)
Nginx 在啟動后,會有一個 master 進(jìn)程和多個 worker 進(jìn)程。
master 進(jìn)程主要用來管理 worker 進(jìn)程,包含:接收來自外界的信號,向各 worker 進(jìn)程發(fā)送信號,監(jiān)控 worker 進(jìn)程的運(yùn)行狀態(tài),當(dāng) worker 進(jìn)程退出后(異常情況下),會自動重新啟動新的 worker 進(jìn)程。
而基本的網(wǎng)絡(luò)事件,則是放在 worker 進(jìn)程中來處理了。
多個 worker 進(jìn)程之間是對等的,他們同等競爭來自客戶端的請求,各進(jìn)程互相之間是獨(dú)立的。
一個請求,只可能在一個 worker 進(jìn)程中處理,一個 worker 進(jìn)程,不可能處理其它進(jìn)程的請求。worker 進(jìn)程的個數(shù)是可以設(shè)置的,一般我們會設(shè)置與機(jī)器cpu核數(shù)一致,這里面的原因與 Nginx 的進(jìn)程模型以及事件處理模型是分不開的。
Nginx 的進(jìn)程模型,可以由下圖來表示:
3.Nginx部署JavaWeb項(xiàng)目
很早就想利用nginx來部署Java Web程序了,今天如愿了,我是在Ubuntu16.04下進(jìn)行的操作,具體操作如下:
1.更新一下來源:sudo apt-get update
2.安裝Nginx:sudo apt-install nginx
安裝完畢之后就可以在瀏覽器里輸入你的服務(wù)器IP(域名)就能訪問到nginx的默認(rèn)頁面了
3.接下來就是配置Nginx了,cd 到nginx的配置文件下:cd /etc/nginx
具體路徑,按照自己的安裝路徑來
4.打開配置文件:vim nginx.conf
可以看到,這里其實(shí)并沒有讓我們進(jìn)行配置的地方,真正讓我們配置項(xiàng)目映射的應(yīng)該是server{}
通過http的配置最下方會發(fā)現(xiàn),這里有兩個人引入:
通過逐級發(fā)現(xiàn),/etc/nginx/sites-enabled/ 指向的是**/etc/nginx/sites-enabled/**下的文件,那么我們就cd下這個文件夾下打開配置文件:
5.OK,通過上面,我們就來到了我們需要配置的地方,加入配置:
proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:9000;
proxy_pass http://127.0.0.1:9000; 就是你自己項(xiàng)目的啟動地址,只需要改個端口就可以了~
我這里就只是部署了一個項(xiàng)目,如果需要部署多個項(xiàng)目,那就可以通過配置二級域名或者是不同的訪問路徑來實(shí)現(xiàn)
6.上面的完成時候,保存退出,重啟nginx即可:nginx -s reload,現(xiàn)在就可以通過IP(域名)就能夠訪問到自己部署的項(xiàng)目頁面了。
4.通過二級域名部署JavaWeb項(xiàng)目
更剛才一樣,來到配置頁面,在添加一個server{}配置:
server{ listen 80; server_name XXX(自己的二級域名); location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:9001; } }
添加完畢之后保存退出,重啟Nginx就可以訪問了。
5.通過不同路徑方式部署JavaWeb項(xiàng)目
與一開始一樣,只不過這一次,我們不需要再新建一個sever{}來進(jìn)行配置,只需要在一開始配置的地方再添加一個location:
location /two { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:9001; }
只是把location 后的這個路徑改一下就可以了,但是這個路徑要跟項(xiàng)目中的配置一樣,項(xiàng)目中的是:
server.context-path: /two
我這里是springboot項(xiàng)目
就這樣,保存退出,重啟Nginx就可以啦~
這里的配置只是對于Nginx的配置,是Nginx去監(jiān)聽這個端口,自己的項(xiàng)目還是需要另外啟動的~
6.補(bǔ)充
啟動Nginx:sudo systemctl start nginx
開機(jī)自動啟動Nginx服務(wù):sudo systemctl enable nginx
關(guān)閉開機(jī)自動啟動Nginx服務(wù):sudo systemctl disable nginx
還可以使用:sudo nginx -t,來測試Nginx是否啟動成功,這個也是可以查看每次修改完配置是否正確
Nginx默認(rèn)是監(jiān)聽80端口
總結(jié)
有關(guān)Nginx的更多配置~后面自己遇到了再做記錄
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx日志中request_time和upstream_response_time區(qū)別
Nginx日志中的request_time和upstream_response_time是關(guān)鍵的性能指標(biāo),本文就來介紹一下Nginx日志中request_time和upstream_response_time區(qū)別,具有一定的參考價值,感興趣的可以了解一下2024-11-11nginx 負(fù)載均衡 多站點(diǎn)共享Session
這里我們就 演練一下 以數(shù)據(jù)庫的形來存儲Session,來實(shí)現(xiàn)多站點(diǎn)共享Session2012-11-11解決Nginx網(wǎng)關(guān)超時出現(xiàn)504 GATEWAY TIMEOUT的問題
這篇文章主要給大家介紹了如何解決Nginx網(wǎng)關(guān)超時出現(xiàn)504 GATEWAY TIMEOUT的問題,文章通過代碼示例和圖文結(jié)合介紹的非常詳細(xì),有遇到相同問題的朋友可以參考閱讀本文2023-11-11Nginx配置真實(shí)IP地址轉(zhuǎn)發(fā)的實(shí)現(xiàn)示例
在許多web應(yīng)用程序中,獲取客戶端的真實(shí) IP 地址非常重要,本文就來介紹一下Nginx配置真實(shí)IP地址轉(zhuǎn)發(fā)的實(shí)現(xiàn)示例,感興趣的可以了解一下2024-11-11講解Nginx服務(wù)器中設(shè)置本地瀏覽器緩存的簡單方法
這篇文章主要介紹了Nginx服務(wù)器中設(shè)置本地瀏覽器緩存的簡單方法,需要的朋友可以參考下2015-12-12