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