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 在啟動(dòng)后,會有一個(gè) master 進(jìn)程和多個(gè) 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)程退出后(異常情況下),會自動(dòng)重新啟動(dòng)新的 worker 進(jìn)程。
而基本的網(wǎng)絡(luò)事件,則是放在 worker 進(jìn)程中來處理了。
多個(gè) worker 進(jìn)程之間是對等的,他們同等競爭來自客戶端的請求,各進(jìn)程互相之間是獨(dú)立的。
一個(gè)請求,只可能在一個(gè) worker 進(jìn)程中處理,一個(gè) worker 進(jìn)程,不可能處理其它進(jìn)程的請求。worker 進(jìn)程的個(gè)數(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),這里有兩個(gè)人引入:

通過逐級發(fā)現(xiàn),/etc/nginx/sites-enabled/ 指向的是**/etc/nginx/sites-enabled/**下的文件,那么我們就cd下這個(gè)文件夾下打開配置文件:

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)目的啟動(dòng)地址,只需要改個(gè)端口就可以了~

我這里就只是部署了一個(gè)項(xiàng)目,如果需要部署多個(gè)項(xiàng)目,那就可以通過配置二級域名或者是不同的訪問路徑來實(shí)現(xiàn)
6.上面的完成時(shí)候,保存退出,重啟nginx即可:nginx -s reload,現(xiàn)在就可以通過IP(域名)就能夠訪問到自己部署的項(xiàng)目頁面了。
4.通過二級域名部署JavaWeb項(xiàng)目
更剛才一樣,來到配置頁面,在添加一個(gè)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)目
與一開始一樣,只不過這一次,我們不需要再新建一個(gè)sever{}來進(jìn)行配置,只需要在一開始配置的地方再添加一個(gè)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 后的這個(gè)路徑改一下就可以了,但是這個(gè)路徑要跟項(xiàng)目中的配置一樣,項(xiàng)目中的是:
server.context-path: /two
我這里是springboot項(xiàng)目
就這樣,保存退出,重啟Nginx就可以啦~
這里的配置只是對于Nginx的配置,是Nginx去監(jiān)聽這個(gè)端口,自己的項(xiàng)目還是需要另外啟動(dòng)的~
6.補(bǔ)充
啟動(dòng)Nginx:sudo systemctl start nginx
開機(jī)自動(dòng)啟動(dòng)Nginx服務(wù):sudo systemctl enable nginx
關(guān)閉開機(jī)自動(dòng)啟動(dòng)Nginx服務(wù):sudo systemctl disable nginx
還可以使用:sudo nginx -t,來測試Nginx是否啟動(dòng)成功,這個(gè)也是可以查看每次修改完配置是否正確
Nginx默認(rèn)是監(jiān)聽80端口
總結(jié)
有關(guān)Nginx的更多配置~后面自己遇到了再做記錄
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
分割nginx日志的實(shí)現(xiàn)(避免日志多大)
nginx默認(rèn)沒有提供對日志文件的分割功能,所以隨著時(shí)間的增長,access.log和error.log文件會越來越大,本文主要介紹了分割nginx日志的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04
基于紅帽redhat環(huán)境下配置Nginx Web服務(wù)器
本文詳細(xì)介紹了在RedHat10系統(tǒng)上使用Nginx搭建基于不同IP、端口和主機(jī)名的Web服務(wù)器,并配置基于HTTPS的加密站點(diǎn),具有一定的參考價(jià)值,感興趣的可以了解一下2026-04-04
Nginx在Windows下的安裝及環(huán)境配置(將nginx作為服務(wù)運(yùn)行)
這篇文章主要介紹了Nginx在Windows下的安裝及環(huán)境配置,主要是將nginx作為服務(wù)運(yùn)行,需要的朋友可以參考下2018-11-11
web部署到nginx以后js,css等靜態(tài)文件加載不正常的解決過程
在Ubuntu中配置Web頁面時(shí),JS和CSS文件雖可獲取但加載失敗,可能因路徑錯(cuò)誤、服務(wù)器配置不當(dāng)、權(quán)限限制或緩存問題導(dǎo)致頁面布局異常,需檢查文件路徑、服務(wù)器設(shè)置、MIME類型及瀏覽器控制臺錯(cuò)誤信息以排查原因2025-09-09
nginx實(shí)現(xiàn)單主機(jī)多域名映射的項(xiàng)目實(shí)踐
本文主要介紹了nginx實(shí)現(xiàn)單主機(jī)多域名映射的項(xiàng)目實(shí)踐,配置不同的子域名映射到不同的內(nèi)部服務(wù)端口,具有一定的參考價(jià)值,感興趣的可以了解一下2025-02-02

