#安装依赖并编译安装 Nginx
yum install -y pcre pcre-devel openssl openssl-devel
wget -q http://nginx.org/download/nginx-1.6.3.tar.gz
tar -zxvf nginx-1.6.3.tar.gz
cd nginx-1.6.3
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.6.3 --with-http_stub_status_module --with-http_ssl_module
make && make install
ln -s /usr/local/nginx-1.6.3/sbin/nginx /usr/local/sbin/nginx
反向代理指令
指令 | 说明 |
---|---|
proxy_pass | 代理 IP |
proxy_set_header | 将客户端请求发送到服务器钱更改客户端请求头信息 |
proxy_connect_timeout | 配置 Nginx 与后端服务器尝试建立连接的超时时间 |
proxy_read_timeout | 配置 Nginx 向后端服务器发出 read 请求后,等待翔云的超时时间 |
proxy_redirect | 用于修改后端服务器返回投中的Location 和 Refresh |
#假设本机IP 192.168.0.20 ,hosts 配置域名proxy.server1 192.168.0.20 proxy.server2 192.168.0.20
#nginx.conf 核心配置
server{
listen 80;
server_name proxy.server1;#没分号结尾会报错
location / {
proxy_pass http://192.168.0.21;
}
}
server{
listen 80;
server_name proxy.server2;
location / {
proxy_pass http://192.168.0.22;
}
}
负载均衡配置
server{
listen 80;
server name www.test.cn;
location /{
proxy_pass http://web_server
proxy_set_header Host $host;
proxy_set_header X-Client-IP $remote_addr;
}
location ~ * \.(gif|jpg|png|flv|mp4)${
valid_referers www.test.cn test.cn;
if($invalid_referer){
return 403;
}
}
}
upstream web_server{
# ip_hash; #使用 ip_bash 不能使用 weight 和 backup 设置
server 192.168.0.100 weight=1
server 192.168.0.101 weight=3
server 192.168.0.102 weight=2 down
server 192.168.0.103 backup
#常用状态参数
# max_fails 允许请求失败的次数,默认1
# fail_timeout 在经历了 max_fails 次失败后,暂停服务的时间
# backup 预留的备份机器
# down 表示当前的 server 暂时不参与负载
}
Nginx 缓存配置
server{
listen 80;
server_name web_server;
add_header X-Via $server_addr;
add_header X-Cache $upstream_cache_status;
location / {
root cache;
proxy_store on;
proxy_store_access user:rw group:rw all;
proxy_cache cache_one;#设置缓存区域名称
proxy_cache_key $host$url$is_args$args;
proxy_cache_valid 200 10m; #200 缓存10分钟
proxy_cache valid 304 1m;#304 缓存1分钟
proxy_cache valid 301 302 1h;# 301、302 缓存 1小时
proxy_temp_path cache_tmp;
if(!-e $request_filename){
proxy_pass http://192.168.0.110;
}
}
}
启用 SSL 服务
server {
listen 443;
server_name www.test.cn
root html/test.com
ssl on;
ssl_certificate /usr/local/nginx/conf/ssl/server.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/server.key;
}
限制同一 IP 并发
http{
limit_conn_zone $binary_remote_addr zone=perip:10m; #限制内存共享内存空间
limit_conn perip 10;#限制并发访问数
}
Nginx+Tomcat 动静分离
server{
listen 80;
server_name localhost;
root /usr/localhost/tomcat/webapps/ROOT;
index index.html index.htm index.jsp index.do;
location ~/(WEB-INF|META-INF){
deny all;
}
location ~\.(jsp|do)${
proxy_pass http://127.0.0.1:8080
proxy_set_header X-Client-IP $remote_addr;
}
location ~^/(docs|examples)(/.*)* ${
root /usr/local/tomcat/webapps;
}
}
Nginx 前后端分离前端部署
server {
listen 80;
gzip on;
gzip_static on; # 需要http_gzip_static_module 模块
gzip_min_length 1k;
gzip_comp_level 4;
gzip_proxied any;
gzip_types text/plain text/xml text/css;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
# 前端打包好的dist目录文件
root /data/;
# 若新增后端路由前缀注意在此处添加(|新增)
location /basic-api/ {
proxy_pass http://pigx-gateway:9999/;
proxy_connect_timeout 15s;
proxy_send_timeout 15s;
proxy_read_timeout 15s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
}
}
常用 Nginx 模块
nginx-upstream-fair-module #按Web服务器响应时间实现负载均衡(先下载nginx-upstream-fair.zip安装Nginx时配置./configure --add-module 添加模块)
echo-nginx-module
http_secure_link_module
防盗链