1. Nginx 負(fù)載均衡
1.1 概述
- Nginx 作為代理服務(wù)器角色, 有正向代理和反向代理 兩種.
- 正向代理
- 一般用于代理局域網(wǎng)絡(luò) 內(nèi)的服務(wù)器訪問外網(wǎng)的站點(diǎn), 代理的對象是客戶端, 目的是訪[圖片上傳中...(001.png-8d30e2-1544731366941-0)]
問外網(wǎng)資源.
- 一般用于代理局域網(wǎng)絡(luò) 內(nèi)的服務(wù)器訪問外網(wǎng)的站點(diǎn), 代理的對象是客戶端, 目的是訪[圖片上傳中...(001.png-8d30e2-1544731366941-0)]
- 反向代理
- 反向代理一般是為 讓對互聯(lián)網(wǎng)上對自己的訪問, 代理到內(nèi)網(wǎng)資源, 由內(nèi)網(wǎng)資源提供服務(wù).
- 常用與 負(fù)載均衡, 靜態(tài)資源緩存服務(wù)器
1.2 nginx 反向代理指令
語法:
proxy_pass-
作用:
- 用于代理服務(wù)器協(xié)議和地址以及映射位置可以選URI, 作為協(xié)議, 可以指定 http 或 https 作為地址指定為域名 或者IP 地址, 可選端口
- 可以指定URI, 如果指定了URI, 那么請求傳遞到服務(wù)器時(shí)會(huì)將請求URI
示例:
upstream host1cc {
server 192.168.10.11;
server 192.168.10.12;
}
server {
listen 80;
server_name host1.cc;
location ~ .*$ {
proxy_pass http://host1cc;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
}
}
- 測試

001.png

002.png
2. nginx 配合 php-fpm
- cgi 概念
-
CGI (Common Gateway Interface)
- 通用網(wǎng)關(guān)接口 是HTTP Server和一個(gè)獨(dú)立應(yīng)用程序進(jìn)程之間 通信的協(xié)議, Web 服務(wù)器能夠?qū)⒂脩籼峤坏牡男畔⑼ㄟ^ CGI 交給程序處理, 由應(yīng)用程序處理后, 返回給web程序, 再由web 返回給客戶端.
- 一般web 服務(wù)器只提供簡單的靜態(tài)文件處理(如html, jpg, text), 如果有動(dòng)態(tài)請求(如 php, python.. ) 會(huì)fork 出來一個(gè)新的CGI 程序, 動(dòng)態(tài)腳本請求交給CGI 處理, 不過啟動(dòng)CGI 程序 比較消耗性能, 需要 讀取配置文件, 加載擴(kuò)展等等, 當(dāng)本次請求處理結(jié)束后, 該CGI 程序會(huì)被銷毀.
-
FastCGI
- 快速的 CGI, 由于CGI 每次處理請求都會(huì)創(chuàng)建和銷毀 比較消耗性能, FastCGI 就可以解決該問題,
- FastCGI 會(huì)有一個(gè)常駐的程序, 用于一次讀取配置文件 加載CGI 程序需要的東西, 每當(dāng)有新請求時(shí)啟動(dòng)CGI 就不會(huì)消耗過多性能, 配置也不會(huì)反復(fù)加載, 并且可以在請求處理結(jié)束后, 保留進(jìn)程作為下次使用.
-
php-fpm
- FastCGI process Manager 就是php的 fastCGI 管理器的簡稱.
- 對于php 的FastCGI 進(jìn)程管理器.
- 當(dāng)fastcgi 配置文件有變動(dòng)時(shí), 可以平滑重啟, 不影響已啟動(dòng)的 CGI, 而是在啟動(dòng)新的CGI 時(shí), 使用新的配置, 舊的CGI 運(yùn)行結(jié)束后會(huì)被關(guān)閉.
- 啟動(dòng)php-fpm
[root@node10009 php7]# /opt/app/php7/sbin/php-fpm -t
[14-Dec-2018 03:45:38] NOTICE: configuration file /opt/app/php7/etc/php-fpm.conf test is successful
[root@node10009 php7]# /opt/app/php7/sbin/php-fpm
[root@node10009 php7]# ss -tan | grep 9000
LISTEN 0 128 127.0.0.1:9000 *:*
[root@node10009 php7]#
- nginx 配置 php-fpm
server {
listen 82;
server_name host2.cc;
root /opt/case/wwwroot/host2;
index index.html;
charset utf8;
access_log logs/host2.access.log;
location ~ .*\.php$ {
root /opt/case/wwwroot/host2;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /opt/case/wwwroot/host2/$fastcgi_script_name;
include fastcgi_params;
}
}
- 測試

003.png
END