nginx代理,負載均衡,配置SSL

nginx代理

通過配置文件設置,就可以將特定的鏈接嚮應用服務器轉發。例如 Nginx 可通過以下簡單的配置,即可實現代理轉發: 例如:客戶端想訪問外網web服務器可以從中間搭建一個代理服務器進行轉發;或者客戶端和web服務比較遠傳輸比較慢,可以中間搭建一個代理服務器節省時間

用戶-----代理服務器----web服務器

實驗:

A機器jinkai01 有內網地址IP:192.168.186.140,搭建了bbs.jinkai.cc論壇網站;

B機器jinkai03有內網地址IP:192.168.186.144,外網IP:192.168.230.128;

本機客戶端hosts增加域名解析 192.168.230.128 bbs.jinkai.cc,因爲本機無法通過A去解析域名,所以只有通過B代理連接到A就可以實現域名解析

B機器:

虛擬機新增一塊網卡ens37,僅主機模式獲取地址192.168.230.128;

新增的網卡是沒有配置文件的,可以複製ens33生成一個ens37文件

cp /etc/sysconfig/network-scripts/ifcfg-ens33

/etc/sysconfig/network-scripts/ifcfg-ens37

更改配置文件網卡名問ens37,IP地址,網關和DNS可以刪除不設置

安裝nginx:

生成新的yum倉庫nginx.repo,添加下面內容

vim /etc/yum.repos.d/nginx.repo

[nginx-stable]

name=nginx stable repo

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

gpgcheck=1

enabled=1

gpgkey=https://nginx.org/keys/nginx_signing.key

module_hotfixes=true

安裝:yum install -y nginx

啓動:systemctl start nginx

檢查服務是否開啓:ps aux | grep nginx

定義配置文件:

cd /etc/nginx/conf.d/

vim daili.conf

server {

  listen    80;

  server_name bbs.jinkai.cc; //域名填寫需要web服務端的域名

location /

  {

​    proxy_pass http://192.168.186.140; //web服務端的地址

​    proxy_set_header Host $host;

​    proxy_set_header X-Real-IP $remote_addr;

​    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  }、

}

檢查配置文件語法:nginx -t

重載:nginx -s reload

防火牆添加規則放行80端口:

firewall-cmd --add-port=80/tcp --permanent

firewall-cmd --reload

實驗結果:電腦本機訪問bbs.jinkai.cc成功

nginx負載均衡

負載均衡就是,把請求均衡地分發到後端的各個機器上面。

B機器代理服務器:

定義虛擬配置文件

cd /etc/nginx/conf.d/

vim fuzai.comf

upstream apelearn

  {

​    ip_hash;

​```
        server 115.159.51.96:80 weight=100; //weight 定義權重
​```

​    server 47.104.7.242:80;

  }

  server

  {

​    listen 80;

​    server_name www.apelearn.com;

​    location /

​    {

​      proxy_pass http://apelearn;

​      proxy_set_header Host $host;

​      proxy_set_header X-Real-IP $remote_addr;

​      proxy_set_header X-Forwarded-For 

$proxy_add_x_forwarded_for;

​    }

}

[root@jinkai03 conf.d]# nginx -t

[root@jinkai03 conf.d]# nginx -s reload

電腦本機hosts 設置 192.168.230.128 [www.apelearn.com

](http://www.apelearn.com)

Nginx配置ssl

ssl原理

http與https區別

http默認端口爲80,https默認端口爲443;
http傳輸數據爲明文,https傳輸數據是加密的;

http是HTTP協議運行在TCP之上。所有傳輸的內容都是明文,客戶端和服務器端都無法驗證對方的身份;
https是HTTP運行在SSL/TLS之上,SSL/TLS運行在TCP之上。所有傳輸的內容都經過加密,加密採用對稱加密,但對稱加密的密鑰用服務器方的證書進行了非對稱加密。此外客戶端可以驗證服務器端的身份,如果配置了客戶端驗證,服務器方也可以驗證客戶端的身份。

https工作流程

1.完成TCP三次同步握手
2.客戶端驗證服務器的證書,通過,進入步驟3
3.DH算法協商對稱加密算法的祕鑰、hash算法的祕鑰
4.SSL安全加密碎到協商完成;
5.網頁用加密方式傳輸,用協商的加密算法加密,保證數據完整和不被篡改;



生成ssl密鑰對

正常的網站https使用的ssl證書是需要購買的,我們做實驗就只需要自己生成一個就行了,但是無法在網絡上流通;

下載openssl生成軟件

yum install -y openssl

進入密鑰對目錄

設置祕鑰存放目錄

[root@jinkai03 ]# cd /etc/nginx

生成私鑰

注意這裏要求設置密碼

[root@jinkai03 nginx]# openssl genrsa -des3 -out tmp.key 2048

轉換爲無密碼的私鑰

注意:這裏會提示要求輸入老私鑰文件tmp.key的密碼;

[root@jinkai03 nginx]# openssl rsa -in tmp.key -out jinkai.key

Enter pass phrase for tmp.key:

writing RSA key

刪除老的私鑰

[root@jinkai03 nginx]# rm -rf tmp.key

生成證書請求文件

需要設置詳細信息,可以直接回車默認

[root@jinkai03 nginx]# openssl req -new -key jinkai.key -out jinkai.csr

設置公鑰有效期,生成公鑰

[root@jinkai03 nginx]# openssl x509 -req -days 365 -in jinkai.csr -signkey jinkai.key -out jinkai.crt

注意:jinkai.crt纔是公鑰,jinkai.csr只是請求文件,jinkai.key是私鑰;

以上操作的最終目的是生成jinkai.key和jinkai.crt兩個文件。其實購買的SSL證書主要是 得到這兩個文件,有了這兩個文件就可以配置Nginx

nginx配置SSL

創建ssl配置文件

vim /etc/nginx/conf.d/ssl.conf

代碼

server

{

listen 443; //設置端口爲443

server_name jinkai.com; //設置網站域名爲shu.com

index index.html index.php;

root /data/wwwroot/jinkai.com; //設置web的站點目錄

ssl on; //開啓ssl功能

ssl_certificate jinkai.crt; //指定公鑰名字

ssl_certificate_key jinkai.key; //指定私鑰名字

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

}

檢測與生效

nginx -t

nginx -s reload

錯誤:nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/ssl.conf:7

解決:把ssl on;刪除 把443 改成443 ssl

測試

關閉原有的默認虛擬主機deny all;

防火牆放行443端口;

/etc/hosts添加域名解析

查看監聽端口,有443則成功

netstat -lntp

使用https://jinkai.com訪問,成功;

[root@jinkai03 ]# curl https://jinkai.com

curl: (60) Peer's certificate issuer has been marked as not trusted by the user.

More details here: http://curl.haxx.se/docs/sslcerts.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章