安装
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;