4.48/49 nginx反向代理php
4.50 nginx負載均衡linux
4.51 配置nginx的sslnginx
擴展連接: https://github.com/aminglinux/nginx/tree/master/sslgit
1、nginx反向代理github
什麼叫反向代理?算法
A想要訪問C上的網站 A(用戶)--> B(在和C同一個機房,而且有公網即外網)--> C(不帶公網的機器) A能夠訪問B,B能夠訪問C,最終A成功訪問到了C,即代理的過程,用B代替A去訪問C,B是代理的機器
什麼場景會使用反向代理?vim
1)訪問不帶公網的內網機器 2)解決兩臺機器之間通訊有障礙的問題
場景設置:後端
1)A B 兩臺機器,其中A只有內網,B有內網和外網 2)A的內網ip是 192.168.246.128 3)B的內網ip是 192.168.246.33 B的外網IP是 192.168.253.129 4)C爲客戶端,C只能訪問B的外網IP,不能訪問A或者B的內網IP
需求目的:瀏覽器
C要訪問到A內網上的網站,C經過訪問B,B訪問到了A,最終C訪問到了A
在B機器上編輯虛擬主機配置文件服務器
discuz.tobe.com.conf
server { listen 80; server_name discuz.tobe.com; #代理的域名 location / { proxy_pass http://192.168.246.128; #此處的ip爲真正的源的內網ip,B的nginx會去訪問這個ip,經過這個ip訪問到了網站 proxy_set_header Host $host; #設定header信息,代理時的header是什麼,$host域名即server_name proxy_set_header X-Real-IP $remote_addr; # 最後兩行爲了在日誌當中顯示源ip和顯示CB兩臺機器的ip proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
下方的即爲header信息
綁定hosts
2、nginx負載均衡
參考http://www.javashuo.com/article/p-kvohwbfg-d.html
什麼是負載均衡?
負載均衡就是,把請求均衡地分發到後端的各個機器上面。 好比,A B C D 四臺WEB服務器,如今E要訪問這4臺服務器,F爲Nginx反向代理服務器,可讓F把E的請求均衡地發送到A B C D 4臺服務器上。
使用 dig 查看域名; 沒有安裝能夠用yum安裝此包:yum install -y bind-utils
在192.168.246.33這臺機器上進行配置:
vi apelearn.com.conf
upstream apelearn #upstream定義負載均衡組 { ip_hash; #負載均衡算法 server 115.159.51.96:80 weight=100; #真正的服務器ip地址 #weight=100,權重最高100,最小0 server 47.104.7.242:80; } server { listen 80; server_name www.apelearn.com; location / { proxy_pass http://apelearn; #apelearn即upstream定義的 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
curl -x127.0.0.1:80 www.apelearn.com -I 此時能夠經過本身的機器能訪問該網站。說明設置成功
3、配置nginx的ssl
Nginx的SSL
讓Nginx實現用https來訪問網站。http是80端口,https是443端口。端口能夠定義 https其實就是一種加密的http。
爲何要加密
舉例:若是要在網上銀行匯款,在你匯款過程中,你會輸入銀行卡的密碼。若是不加密,這些數據在傳輸過程當中就有可能被人截獲。 若是使用了https,那麼數據在傳輸過程當中是會加密的。即便抓到了數據包,可是沒法破jie出來。
申請證書:
網站:www.wosign.com (沃通) 免費的:freessl.cn 註冊帳號,輸入域名,開始申請,在這個過程當中須要到DNSpod去加一條TXT的記錄
DNSpod:
把對應的txt信息填入進去
設置完成後會生成證書信息,在服務器上建立ssl目錄用來存放證書。
xxx.crt文件用來加密
xxx.key用來解密
在虛擬主機中配置:
vim discuz.tobe.com.conf
監聽端口改成443 ssl
#ssl on; ssl_certificate /path/to/xxx.crt; ssl_certificate_key /path/to/xxx.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
若是報這個錯誤,說明nginx 1.15 及之後的版本,不須要再寫 ssl on; 了,註釋或刪除
nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/discuz.tobe.com.conf:4
重啓nginx,出現監聽443端口
firewall-cmd --add-port=443/tcp --permanent 把443端口添加到白名單 firewall-cmd --reload 從新加載
在另外一臺機器上,curl訪問https: 返回網站信息即成功
curl -k -H "host:discuz.tobe.com" https://192.168.246.128/index.php
瀏覽器上測試:
使用https訪問: https://discuz.tobe.com