hyzqb 发表于 2018-11-12 11:53:06

Nginx-配置二

##############负载均衡配置#############  #upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。在上面的设定中,通过upstream指令指定了一个负载均衡器的名称ixdba.net。这个名称可以任意指定,在后面需要的地方直接调用即可。
  #1\轮询(默认)。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响
  #upstream poll_svr {
  #server 10.1.146.163;
  #server 10.1.146.133;
  #}
  #2\Weight。指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。
  #upstream weight_svr{
  #server 10.1.146.163 weight=2;
  #server 10.1.146.133 weight=1;
  #}
  #3\ip_hash。每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。
  #upstream ip_hash_svr {
  #ip_hash;
  #server 10.1.146.163;
  #server 10.1.146.133;
  #}
  ###注意 当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。
  #以上方式1,2,3为nginx自带,对以上几种方式,每个server可以有以下几种属性值:
  #1.down 表示单前的server暂时不参与负载
  #2.weight 默认为1.weight越大,负载的权重就越大。
  #3.max_fails,fail_timeout:在fail_timeout指定的周期内,若有max_fails次失败,则认为服务在本周内不可用,下一fail_timeout周末,仍会尝试访问该服务。如果不进行设置,则max_fails默认值为1,fail_timeou默认值为10s。如果将max_fails值设为0,则不进行此检查。
  #4.backup(0.6.7之后版本支持): 其它所有的非backup机器down或者忙的时候,请求backup机器。
  #4\fair。比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。
  #upstream fair_svr{
  #server server1;
  #server server2;
  #fair;
  #}
  #按后端服务器的响应时间来分配请求,响应时间短的优先分配。需要第三方插件
  #5\url_hash。按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是>不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。
  #upstream url_hash _svr{
  #server 10.1.146.163;
  #server 10.1.146.133;
  #hash$request_uri;
  #}
  #使用此种方式时,如果一台机器down掉,不会尝试使用其它机器。对用户端直接返回502 bad Gateway,需要第三方插件
  #################################################################################################################
  ############缓存设置##########
  proxy_cache_path /tmp/nginx/cache    levels=1:2 keys_zone=STATIC:10m;
  #定义缓存的目录 inactive=24hmax_size=1g;
  #levels=1:2表示记录的缓存级别的1级目录一个字符,2级目录2个字符)
  #proxy_temp_path /tmp/nginx/tmp keys_zone表示在内存中将缓存建立索引存储在STATIC这个变量,且最大为10
  #缓存的临时目录 inactive=24h非活动连接保存24h小时,max_size=1g缓存大保存1g。
  ##################################
  upstream www.a.com{
  server 10.1.230.212:80 weight=2 max_fails=3 fail_timeout=20s;
  server 10.1.230.213:80 down;
  server 10.1.230.214:80 backup;
  server 10.1.230.215:80 backup;
  keepalive 32;
  #指定了每个工作进程中保留的持续连接到nginx负载均衡器缓存的最大值。如果超过这个设置值的闲置进程想链接到nginx负载均衡器组,最先连接的将被关闭。应该注意:keepalive指令不限制nginx工作进程可以连接到nginx负载均衡器可以开启的最大公工作进程,如有需要的话,新进程还是会被发起。连接数应该被设置足够低来满足nginx负载均衡器处理新进的连接连接的将被关闭。应该注意:keepalive指令不限制nginx工作进程可以连接到nginx负载均衡器可以开启的最大公工作进程,如有需要的话,新进程还是会被发起。连接数应该被设置足够低来满足nginx负载均衡器处理新进的连接
  }
  upstream message{
  server 10.1.0.222:80;
  #server 10.1.230.217:80 weight=2 max_fails=3 fail_timeout=20s;
  }
  upstream phpjspasp{
  server 10.1.230.212:80 weight=3 max_fails=3 fail_timeout=20s;
  #server 10.1.230.219:8080 weight=2 max_fails=3 fail_timeout=20s;
  }
  upstream fastcgi{
  server 10.1.230.212:9000;
  }
  server {
  listen 80;
  #侦听80端口
  server_name www.a.com;
  #定义使用www.xx.com访问
  access_log /var/log/nginx/www.a.com-access_log main;
  #设定本虚拟主机的访问日志
  root /var/www/html/www.a.com;
  #定义服务器的默认网站根目录位置
  autoindex on;
  # 防止目录浏览
  location ~ /\.ht {
  deny all;
  # 防止.ht文件被请求
  }
  if ($host = 'a.com') {
  rewrite ^/(.*)$ http://www.a.com/$1 permanent;
  }
  #如果访问地址是a.com,则转向www.a.com
  location =/ {
  #默认请求
  index index.html index.php;
  #定义首页索引文件的名称
  #proxy_pass http://www.a.com;
  #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_next_upstream http_500 http_502 http_503 error timeout invalid_header;
  #proxy_next_upstream用来定义故障转移策略,当后端服务节点返回500、502、503、504和执行超时等错误时,自动将请求转发到upstream负载均衡组中的另一台服务器,实现故障转移。
  #proxy_cache   STATIC;
  #proxy_cache_valid200 302 1d;
  #为返回码为200,302的请求缓存1天
  #proxy_cache_valid404 1m;
  #为返回码为404的请求缓存1分钟,404为错误页面
  #include/etc/nginx/conf.d/proxy.conf;
  #载入proxy的配置文件
  }
  #上面是对整个网站做负载均衡.实例中没有开启.
  ##############防盗链设置######################
  ###全站防盗链设置,server语句块中一定要有root语句,或者将它放到location =/下面.否则不生效.
  location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
  valid_referers none blocked server_names *.a.com *.b.com;
  #none意为不存在的Referer头,也就是直接访问网页.
  #blocked意为根据防火墙伪装Referer头,如:“Referer: XXXXXXX”。
  #server_names为一个或多个服务器的列表,0.5.33版本以后可以在名称中使用*通配符.valid_referers匹配多个站点白名单时,可以不用在多个站点前添加server_names参数
  if ($invalid_referer) {
  #if{}里面内容的意思是,如果来路不是指定来路就跳转到rewrite指定的页面,当然直接返回404也是可以的。请确保server段中只有一个location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$,否则可能导致代码无效,如有这个代码段请合并或删除。 切记:如果要跳转到图片,记得替换的图片地址要使用没有防盗链的网站图片,否则由于替换的图片其实也处于防盗链情况下,会造成仍旧无法显示设置的图片。
  rewrite ^/ http://www.tangzhigui.com/content/uploadfile/201105/1167610aa17b0813233fe82d99403e4120110513175212.jpg;
  #这里是返回地址,建议用外部的地址.这个地址也不能开启防盗链.
  #return 404;
  }
  }
  ##########针对图片目录防止盗链
  location /img {
  root /var/www/html/www.a.com;
  valid_referers none blocked *.a.com *.b.com;
  if ($invalid_referer) {
  rewrite ^/ http://www.tangzhigui.com/content/uploadfile/201105/1167610aa17b0813233fe82d99403e4120110513175212.jpg;
  #return403;
  }
  }
  #使用第三方模块ngx_http_accesskey_module实现Nginx防盗链
  #NginxHttpAccessKeyModule实现防盗链
  #如果不怕麻烦,有条件实现的话,推荐使用NginxHttpAccessKeyModule这个东西。
  #他的运行方式是:如我的download 目录下有一个 file.zip 的文件。对应的URI 是http://www.ccvita.com/download/file.zip
  #使用ngx_http_accesskey_module 模块后http://www.ccvita.com/download/file.zip?key=09093abeac094. 只有给定的key值正确了,才能够下载download目录下的file.zip。而且 key 值是根据用户的IP有关的,这样就可以避免被盗链了。
  #据说NginxHttpAccessKeyModule现在连迅雷都可以防了,可以尝试一下。
  ##############################################################
  #######负载均衡配置#########
  #静态文件,nginx自己处理
  location ~ ^/(images|javascript|js|css|flash|media|static)/ {
  root /var/www/html/www.a.com/doc/;
  #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
  expires 30d;
  }
  #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
  #location ~ \.php$ {
  #fastcgi_pass 10.1.230.212:9000;
  #这样所有的php文件都让10.1.230.212这台服务器执行,前提是10.1.230.212这台服务器PHP文件的目录同本机的目录一致.
  #比如本机有/var/www/html/www.a.com/index.php那10.1.230.212也同样有这个目录和文件才可以.
  #fastcgi_pass fastcgi;
  #也可以用这种负载方式指定一组服务器.
  #fastcgi_index index.php;
  #fastcgi_param SCRIPT_FILENAME /var/www/html/www.a.com/$fastcgi_script_name;
  #后面一定要跟PHP文件存放位置.
  #include fastcgi_params;
  #}
  #把请求转发给后台web服务器,反向代理和fastcgi的区别是,反向代理后面是web服务器,fastcgi后台是fasstcgi监听进程,当然,协议也一样。
  location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|txt|css)?$ {
  expires   30d;
  }
  location ~ .*\.(htm|html)?$ {
  expires   30d;
  }
  location ~ .*\.(js|css)?$ {
  expires   1h;
  }
  #静态的由NGINX本身执行
  location ~ .*\.(do|jsp|php|action)?$ {
  proxy_pass http://phpjspasp;
  #用上面定义的代理服务器执行
  # proxy_pass http://10.1.230.212:80;
  #也可以用这种方式来负载
  include/etc/nginx/conf.d/proxy.conf;
  }
  location ^~ /servlet/ {
  proxy_pass http://phpjspasp;
  include/etc/nginx/conf.d/proxy.conf;
  }
  #访问http://www.a.com/servlet下面的所有内容都负载到phpjspasp定义的服务器组中,但这些服务器中一定要有相关的php文件.
  #动态的由phpjspasp这组服务器负载.
  ############################
  ######################错误页面定义##############
  #设置错误信息返回页面,通过error_page指令可以定制各种错误信息的返回页面。在默认情况下,Nginx会在主目录的html目录中查找指定的返回页面,特别需要注意的是,这些错误信息的返回页面大小一定要超过512K,否者会被ie浏览器替换为ie默认的错误页面。
  error_page403 404    /40x.html;
  error_page500 502 503 504 /50x.html;
  #这里定义两个错误页面,403 404转到40x.html.500 502...转到50x.html
  location = /50x.html {
  root/var/www/html/www.a.com/error;
  #这里定义50x.html错误页面,/var/www/html/www.a.com/error下面一定要存在50x.html
  }
  location = /40x.html {
  root/var/www/html/www.a.com/error;
  #这里定义40x.html错误页面,/var/www/html/www.a.com/error下面一定要存在40x.html
  }
  ################################################
  #########################nginx状态##############
  location /NginxStatus {
  stub_status   on;
  #stub_status设置为“on”表示启用StubStatus的工作状态统计功能。.
  access_log       /var/log/nginx/NginxStatus.log;
  #access_log 用来指定StubStatus模块的访问日志文件。
  auth_basic       "NginxStatus";
  #auth_basic是Nginx的一种认证机制。
  auth_basic_user_file/etc/nginx/htpasswd;
  #auth_basic_user_file用来指定认证的密码文件,由于Nginx的auth_basic认证采用的是与Apache兼容的密码文件,因此需要用Apache的htpasswd命令来生成密码文件.
  #例如要添加一个webadmin用户,可以使用下面方式生成密码文件:
  #/usr/local/apache/bin/htpasswd -c /opt/nginx/conf/htpasswd webadmin
  #会得到以下提示信息:
  #New password:
  #输入密码之后,系统会要求再次输入密码。确认之后添加用户成功。
  }
  #################################################
  }

页: [1]
查看完整版本: Nginx-配置二