Nginx 部署、反向代理配置、負(fù)載均衡
最近我們的angular項目部署,我們采用的的是Nginx,下面對Nginx做一個簡單的介紹。
為什么選擇Nginx
- 輕:相比于Apache,同樣的web服務(wù)器占用的資源少
- 多線程模式:Nginx擁有多個worker進(jìn)程,處理請求時是異步非阻塞的
- 社區(qū)活躍
- 可以做反向代理
- 支持7層負(fù)載均衡。什么是七層負(fù)載均衡
- 配置簡單,易上手。這才是我們選擇的主要原因。
上一個官方下載下來的文檔
PDF幻燈片可以到Linux公社資源站下載:
——————————————分割線——————————————
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2019年資料/3月/22日/Nginx安裝部署之反向代理配置與負(fù)載均衡/
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
——————————————分割線——————————————
Window下 的 Nginx
雖然一般的服務(wù)器都不使用windows系統(tǒng),我們還是先來一段window的
- 訪問 ngix下載頁下載windows 版本的 ngix壓縮包
- 解壓到相應(yīng)的目錄下。
- 打開CMD, cd到解壓ngix的目錄下,鍵入 start nginx.exe
- 打開瀏覽器,輸入localhost/127.0.0.1
- 上圖:
- 常用命令:
nginx -s stop #停止nginx nginx -s reload #重新加載nginx配置 nginx -s reopen #重新啟動 nginx -s quit #退出nginx
Linux(CentOS) 下的 Nginx
下面是我們真正使用的Linux 下 搭建Nginx,演示時我使用的WM Ware創(chuàng)建的虛擬機(jī)。使用putty進(jìn)行遠(yuǎn)程連接。注:如果使用服務(wù)器操作的話,粘貼可就麻煩了,所以還是用遠(yuǎn)程連接吧,能直接copy paste命令
菜鳥教程的方法
直接上鏈接。Nginx安裝
官方文檔上的方法
- cd 到 yum的資源目錄下
cd /etc/yum.repos.d/
- 創(chuàng)建一個文件:nginx.repo,
vi nginx.repo # 內(nèi)容 [nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1 # 文檔上的url是http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/ # 替換成你的 os 與 版本 # 保存退出
- 鍵入如下一系列命令
yum -y install nginx # 安裝 systemctl enable nginx #開機(jī)自啟 systemctl start nginx #啟動nginx firewall-cmd --permanent --zone=public --add-port=80/tcp #永久開啟80端口 firewall-cmd --reload #重新加載防火墻
- 下面我們回到物理機(jī),測試一下虛擬機(jī)上的Nginx 服務(wù)是否安裝成功。在物理機(jī)打開瀏覽器,鍵入:虛擬機(jī)IP:80,上圖:
- 常用命令與Windows相同。
- 個人建議使用官方上的配置。
說明Angular 項目的打包,并部署到虛擬機(jī)的Nginx
- 在本地找了一個angular項目目錄下 ng-build,會生一個dist文件夾
- 鍵入如下命令:nginx -t
nginx -t #查看配置文件路徑 #結(jié)果 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
#查看上述路徑的文件 user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
- 注意上面最后一句話包含conf.d文件夾下的所有.conf。我們再那個文件夾下找到了default.conf ,編輯default.conf
server { listen 80; server_name localhost; location / { #root /usr/share/nginx/html; root /usr/share/nginx/html/dist/demo; #更改成我們上傳的目錄一定要寫到有index.html那一級 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
- 重新載入Nginx配置
nginx -s reload
- 上對比圖
配置一個簡單的反向代理
前端需要調(diào)用后端的Rest API,我們需要將一部分請求配置反向代理。
- 直接上conf配置
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html/dist/demo; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # 匹配到/proxy/這個url的時候代理到220.181.112.244 百度這個服務(wù)器 location ^~ /proxy/ { proxy_set_header Host 220.181.112.244; proxy_set_header X-Real-IP 220.181.112.244; proxy_pass http://220.181.112.244/proxy/; proxy_http_version 1.1; proxy_set_header Connection ""; } }
- 在重新載入配置前,我們先嘗試一下,上圖:
注:本地項目,沒有配置路由,所有會沒有proxy這個東西,會報404錯誤,我們可以通過查看當(dāng)前404是哪個服務(wù)器包的錯,來判斷是否發(fā)生反向代理
從圖中可以看出,此時沒有進(jìn)行反向代理,在虛擬機(jī)的服務(wù)器上提示404
注:這里說明一點,就是即便發(fā)生了法相貸,但是network中的顯示還是我的虛擬機(jī)的ip,所以不能當(dāng)做是否發(fā)生反向代理的標(biāo)注
- 重新載入Nginx配置
nginx -s reload
- 刷新剛才的頁面,上圖:可以發(fā)現(xiàn),已經(jīng)代理到百度的錯誤頁面上去了。
-
一個簡單的反向代理就配置好了。
nginx 負(fù)載均衡
注:20190220更新
- 準(zhǔn)備工作
1.一臺虛擬機(jī) 2.虛擬機(jī)安裝docker
- 如上面操作在虛擬機(jī)上搭載一個Nginx服務(wù)器
- 使用docker 拉取nginx 鏡像
docker pull nginx
- 運行兩個nginx的容器
docker run --name nginx-test-1 -d -p 8888:80 nginx /bin/bash docker run --name nginx-test-2 -d -p 8889:80 nginx /bin/bash
- 分別進(jìn)入到兩個容器中,更改其中nginx web目下的index.html
docker exec -it nginx-test-1 /bin/bash 內(nèi)容改成 this is nginx1 docker exec -it nginx-test-2 /bin/bash 內(nèi)容改成 this is nginx2
- 退回到虛擬機(jī)中,更改虛擬機(jī)的nginx conf文件
server{ location / { root /usr/share/nginx/html; index index.html index.htm; proxy_pass http://balance; #balance 是下面upstream后定義的名字 } } # 在server{}外面增加如下代碼 upstream balance { server localhost:8888 weight=1; server localhost:8889 weight=1; }
- 在本機(jī)訪問localhost
curl localhost # 會發(fā)現(xiàn)this is nginx1 、 this is nginx2交替出現(xiàn)
下面關(guān)于Nginx的文章您也可能喜歡,不妨參考下:
CentOS 7下Nginx服務(wù)器的安裝配置 http://www.haoyitu.cn/Linux/2017-04/142986.htm
CentOS上安裝Nginx服務(wù)器實現(xiàn)虛擬主機(jī)和域名重定向 http://www.haoyitu.cn/Linux/2017-04/142642.htm
CentOS 6.8 安裝LNMP環(huán)境(Linux+Nginx+MySQL+PHP) http://www.haoyitu.cn/Linux/2017-04/142880.htm
Linux下安裝PHP環(huán)境并配置Nginx支持php-fpm模塊 http://www.haoyitu.cn/Linux/2017-05/144333.htm
Nginx服務(wù)的SSL認(rèn)證和htpasswd認(rèn)證 http://www.haoyitu.cn/Linux/2017-04/142478.htm
Ubuntu 16.04上啟用加密安全的Nginx Web服務(wù)器 http://www.haoyitu.cn/Linux/2017-07/145522.htm
Linux中安裝配置Nginx及參數(shù)詳解 http://www.haoyitu.cn/Linux/2017-05/143853.htm
Nginx日志過濾 使用ngx_log_if不記錄特定日志 http://www.haoyitu.cn/Linux/2014-07/104686.htm
CentOS 7.2下Nginx+PHP+MySQL+Memcache緩存服務(wù)器安裝配置 http://www.haoyitu.cn/Linux/2017-03/142168.htm
Nginx反向代理實現(xiàn)Tomcat負(fù)載均衡 http://www.haoyitu.cn/Linux/2018-03/151223.htm
Nginx的正向代理與反向代理詳解 http://www.haoyitu.cn/Linux/2019-03/157360.htm
Nginx搭建反向代理服務(wù)器 http://www.haoyitu.cn/Linux/2018-03/151418.htm