代理伺服器後面有多個web伺服器

upstream 子產品
dig 指令 域名解析
編輯新配置檔案
ip_hash 同一個使用者保持在一個機器上
不支援去代理https
ssl 原理
https 是加密的傳輸
每次傳輸都是随機的
生成SSL密鑰對
生成密鑰
轉換key 去掉密鑰密碼
-in 指定密鑰 -out 指定輸出
生成請求檔案 名字可以自己定義
生成公鑰檔案 -days 證書日期
配置nginx ssl
編輯新配置檔案 監聽端口443
建立root 目錄
檢測文法 報錯
重新編譯 需要ssl_module
加上ssl_module &&make&& make install
重新檢測文法沒有報錯
重新啟動服務 檢視端口多了一個443
在root 目錄下建立檔案
證書被标記為不可信任
提示通路不安全
沃通電子認證買證書
場景:1台nginx去代理4台apache
需求:根據不同的請求uri 代理到不同的apache
nginx的配置檔案為:
upstream aa.com {
server 192.168.0.121;
server 192.168.0.122;
}
upstream bb.com {
server 192.168.0.123;
server 192.168.0.124;
server {
listen 80;
server_name www.abc.com;
location ~ aa.php
{
proxy_pass http://aa.com/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location ~ bb.php
proxy_pass http://bb.com/;
nginx代理--根據通路的目錄來區分後端的web
我的需求: 當請求的目錄是 /aaa/ 則把請求發送到機器a,當請求的目錄為/bbb/則把請求發送到機器b,除了目錄/aaa/與目錄/bbb/外,其他的請求發送到機器b
配置檔案内容為:
upstream aaa.com
server 192.168.111.6;
upstream bbb.com
server 192.168.111.20;
listen 80;
server_name li.com;
location /aaa/
proxy_pass http://aaa.com/aaa/;
location /bbb/
proxy_pass http://bbb.com/bbb/;
location /
proxy_pass http://bbb.com/;
說明:
1 以上配置檔案中的 aaa.com 以及 bbb.com 都是自定義的,随便寫。
2 upstream 中的server 可以寫多個,例如
server 192.168.111.4;
server 192.168.111.5;
3 proxy_pass http://aaa.com/aaa/ 這裡必須要加這個目錄,不然就通路到根目錄了。
4 實際上,上述配置檔案中, localtion /bbb/ 部分是可以省略掉的,因為後邊的 location / 已經包含了/bbb/,是以即使我們不去定義 localtion /bbb/ 也是會通路到 bbb.com 的。
nginx 代理多台機器 長連接配接(會話保持)解決問題
網站使用程式 discuzx3 通路都正常,隻有使用者登陸存在異常,具體的情況是這樣的:
使用者登陸後,會馬上顯示未登陸,然後重新整理一下或者多下又變成了登陸中。
這個問題很顯然是由于session導緻,背景有多個web機器,當使用者登陸後,會把登陸态session儲存到目前web,但是再次發送請求時則會到另一台機器,是以原來的session資訊找不到了。解決這個問題有兩個思路:
可以把session時時同步到另外的機器。
可以讓前端的排程器保持長連接配接,也就是說某個使用者的請求在某一時間段内始終抓發到固定的一台機器上。
這兩種方式,第二種更容易實作。
使用的是nginx的代理,其中nginx有一種算法支援長連接配接,具體配置是這樣的:
upstream test {
ip_hash;
server 192.168.109.5;
server 192.168.109.3;
關鍵代碼: ip_hash
這樣,nginx會把使用者的請求一直轉發到後端的某台機器
http://blog.sina.com.cn/s/blog_72995dcc01016msi.html