Nginx反向代理服务器配置

1.1. 静态服务器

server {
  listen 80;
  server_name b.test.com;
  root /data/www/test/;
  index index.html index.htm;

}

1.2. 反向代理

server {
  listen 80;
  server_name b.test.com;

  location / {
    proxy_set_header  Host  $host;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_pass http://10.0.100.63;
  }
}
Host:客户端访问的主机地址

X-Real-IP:用于记录真实客户端IP(发送请求的真实IP,多级代理,即上一级代理)

X-Forwarded-For:是用于记录代理信息,每经过一级代理(匿名代理除外)的IP

格式:client, proxy1, proxy2

1.3. 负载均衡

upstream test {
  server 192.168.2.10:8000 weight=5;
  server 192.168.2.11:8000 weight=5 max_conns=800;
  server 192.168.2.12:8000 weight=5 max_fails=1  fail_timeout=30s;
}
weight:权重,值越大,访问的比例越大
max_conns:最大连接数
max_fails:最大失败次数,与fail_timeout配合使用
fail_timeout:失败检测周期,例:30s内失败1次,将server标记为down,等待30s不接受请求,30s再接收请求进行检测
down:表示单前的server暂时不参与负载
backup:备用server,其它server繁忙或者down时,请求此server
1.3.1. 算法
轮询(默认)

1:1处理请求

upstream test {
  server 192.168.2.10:8000;
  server 192.168.2.11:8000;
}
权重

根据权重值比例处理请求,值越大,请求比例越大

upstream test {
  server 192.168.2.10:8000 weight=1;
  server 192.168.2.11:8000 weight=2;
}
ip_哈希算法

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。

upstream test {
  ip_hash;
  server 192.168.2.10:8000;
  server 192.168.2.11:8000;
}
least_conn最小连接

比较每个后端的conns/weight,选取该值最小的后端。

least_time最小响应时间

1.4. SSL

server {
  listen 443;
  server_name b.test.com;
  ssl on;
  root /data/www/test/;
  index index.html index.htm;
  ssl_certificate   /etc/nginx/ssl/server.crt;
  ssl_certificate_key  /etc/nginx/ssl/server.key;
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;

}

# 配置http跳转https
server {
  listen 80;
  server_name b.test.com;
  rewrite ^(.*)$ https://$host$1 permanent; 
}
1.5. PHP-FPM
server {
  listen       80 default_server;
  server_name  _;
  root         /data/www/demo;
  index        index.html index.htm index.php;
  location ~ \.php$ {
      try_files $uri =404;
      fastcgi_intercept_errors on;
      fastcgi_index  index.php;
      include        fastcgi_params;
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      fastcgi_pass   127.0.0.1:9000;
  }
}

1.6. 缓存

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
  expires 30d;
  access_log off;
}

location ~ .*\.(js|css)?$ {
  expires 12h;
  access_log off;
}

1.7. 正则规则

=:精确配置
~:区分大小写匹配
~*:不区分大小写匹配
^:匹配字符串的开始位置
$:匹配字符串的结束位置
.:匹配除换行符以外的任意字符
[a-z]:匹配a~z的任意单个字母
\d:匹配数字
\w:匹配字母、数字、下划线、汉字
\s:匹配任意的空白符
(png|jpg|bmp):匹配png或jpg或bmp
*:重复0次或多次
?:重复0次或1+:重复1次以上
{n,m}:重复n~m次
发布了20 篇原创文章 · 获赞 40 · 访问量 5807

猜你喜欢

转载自blog.csdn.net/file_data/article/details/102524753