LNMP---nginx反向代理、nginx負載均衡、配置nginx的ssl

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
相關文章
相關標籤/搜索