安裝
yum install -y gcc gcc-c++ zlib-devel
--with-pcre
負載均衡配置
用戶通過https協議訪問nginx服務器,內部服務器用http協議
upstream <upstream_name>{
server [ip]:[port];
}
server{
listen 443;
location / {
proxy_pass http://<upstream_name>;
}
}
負載服務器也提供Web服務
新增一個端口用於負載服務器提供web服務 [new_port]
server 127.0.0.1[new_port]
HTTP協議負載配置
## HTTP協議
http {
upstream [name1] {
### max_fails=1 最大連接失敗次數
### fail_timeout 最大連接超時時間
server [ip]:[port] max_fails=1 fail_timeout=40s;
server [ip]:[port] max_fails=1 fail_timeout=40s;
}
server {
...
location / {
### 設置代理服務器的地址。地址可以指定爲域名或IP地址,以及端口
proxy_pass http://[name1]; ## 其他協議不用加 http://前綴
### 定義與代理服務器建立連接的超時時間
proxy_connect_timeout 1;
proxy_read_timeout 1;
stub_status on; ##開啓統計功能。Active connections 活動連接數。
access_log off;
}
}
## 其他協議(TCP),例如ssh協議轉發
stream {
upstream <upstream_name> {
server [ip]:[port];
}
server {
listen [port];
proxy_pass <upstream_name>; ##和http協議的差距,http協議要加 http://前綴
}
同端口不同域名
server {
listen *:88;
server_name 1.t1.com;
location / {
proxy_pass http://127.0.0.1:8081;
}
}
server {
listen *:88;
server_name 2.t1.com;
location / {
proxy_pass http://127.0.0.1:8082;
}
}
禁用未綁定域名訪問
server {
listen 80 default_server;
server_name _;
return 404;
}
nginx健康檢查模塊
nginx的健康檢查(health_check)
主要是通過在upstream中配置max_fails和fail_timeout來實現
nginx openssl模塊
源碼安裝的軟件添加新模塊
進入解壓包
重新編譯
如nginx添加ssl支持模塊
./configure --prefix=/usr/local/nginx --with-pcre=/home/pcre-8.41 --with-http_stub_status_module --with-http_ssl_module --with-openssl=/home/openssl-1.0.2l
不要make install ,會覆蓋原來的。
備份源二進制文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
替換二進制文件
cp ./objs/nginx /usr/local/nginx/sbin/
查看是否成功
/usr/local/nginx/sbin/nginx -V
配置nginx日誌格式,採用log_format格式:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
獲取客戶端真實IP
### nginx http_realip_module模塊
一個透明的代理服務器在把用戶的請求轉到下一環節的服務器時,會在 HTTP 的頭中加入一條 X-Forwarded-For 記錄,用來記錄用戶的真實 IP,其形式爲 X-Forwarded-For:用戶IP。如果中間經歷了多個代理服務器,那麼 X-Forwarded-For 會表現爲以下形式:X-Forwarded-For:用戶IP, 代理服務器1-IP, 代理服務器2-IP, 代理服務器3-IP, ……。
nginx -V | grep http_realip_module命令查看該模塊是否已安裝
--with-http_realip_module
### 修改對應 server 的配置
set_real_ip_from ip_range1;
set_real_ip_from ip_range2;
...
set_real_ip_from ip_rangex;
real_ip_header X-Forwarded-For;
連接超時
upstream timed out (110: Connection timed out) while reading response header from upstream
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
上傳文件大小
client_max_body_size 50M;