Nginx配置实例

虚拟主机配置实例

下面在Nginx中创建3个虚拟主机。

        http {
            server {
                listen       80;
                server_name  www,domain1.com;
                access_log  logs/domain1.access.log  main;
                location / {
                    root   /web/www/domain1.com/htdocs;
                    index  index.html;
                }
            }
            server {
                listen  80;
                server_name  www.domain2.com;
                access_log  logs/domain2.access.log  main;
                location / {
                    index index.html;
                    root   /web/www/domain2.com/htdocs;
                }
            }
            include  /usr/local/nginx/conf/vhosts/www.domain2.com.conf;
        }

这里使用include引用了一个虚拟主机配置文件,其中的内容如下:

        server {
            listen  80;
            server_name  www.domain3.com;
            access_log  logs/domain3.access.log main;
            location / {
                index index.html;
                root /web/www/domain3.com/htdocs;
            }
        }

负载均衡配置实例

通过Nginx的反向代理功能配置一个Nginx负载均衡服务器,通过Nginx调度后端3个结点:

        http {
            upstream myserver {
                server 192.168.12.181:80 weight=3 max_fails=3 fail_timeout=20s;
                server 192.168.12.182:80 weight=1 max_fails=3 fail_timeout=20s;
                server 192.168.12.183:80 weight=4 max_fails=3 fail_timeout=20s;
            }
            server {
              listen  80;
              server_name  www.domain.com  192.168.12.189;
              index index.htm index.html;
              root  /ixdba/web/wwwroot;

            location / {
                proxy_pass  http://myserver;
                proxy_next_upstream  http_500 http_502 http_503 error timeout invalid_header;
                include  /usr/local/nginx/conf/proxy.conf;
            } 
            }
        }

在上面的定义中,先定义了一个名叫myserver的负载均衡列表,然后在location中通过“proxy_pass http://myserver;”实现负载调度功能,其指定后端服务器的地址和端口,地址可以为ip或主机名。“proxy_next_upstream”用来定义故障转移策略,当后端返回500、502、503、504和执行超时等错误时,自动请求upstream负载均衡组的另一台服务器,实现故障转移。

最后用include包含进一个proxy.conf文件,内容如下:

          proxy_redirect  off;
          proxy_set_header  Host  $Host;
          proxy_set_header  X-Real-IP  $remote_addr;
          proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
          client_body_buffer_size  128k;
          proxy_connect_timeout  90;
          proxy_send_timeout  90;
          proxy_read_timeout  90;
          proxy_buffer_size  4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size  64k;
          proxy_temp_file_write_size  64k;

proxy_set_header:设置由后端服务器获取用户的主机名和ip地址,以及代理者的真是ip地址;

client_body_buffer_size:指定客户端请求主体缓冲区大小,可以理解为先保存到本地再传给用户;

proxy_connect_timeout:与后端服务器连接的超时时间,即发起握手等候响应的超时时间;

proxy_send_timeout:后端服务器的数据返回时间,即在规定时间内后端服务器必须传完说有数据,否则Nginx将断开连接;

proxy_read_timeout:Nginx从代理的后端服务器获取信息的时间,表示连接建立成功后,Nginx等待后端服务器的响应时间;

proxy_buffer_size:设置缓冲区大小,默认等于proxy_buffers设置的大小;

proxy_buffers:设置缓冲区数量和大小,Nginx从代理的后端服务器获取的响应信息会放到缓冲区;

proxy_busy_buffers_size:设置系统繁忙时使用proxy_buffers的大小,推荐为proxy_buffers*2;

proxy_temp_file_write_size:指定proxy缓存临时文件的大小;

防盗链配置实例

      location ~* \.(jpg|gif|png|swf|mp3|mp4)$ {
          valid_referers none blocked *.ixdbal.net ixdbal.net;
          if ($invalid_referer) {
              rewrite ^/ http://www.ixdba.net/img/error.gif;
          }
      }
        location /images {
            root /usr/local/nginx/html;
            valid_referers none blocked *.ixdbal.net ixdbal.net;
            if ($invalid_referer) {
                return 403;
            }
        }

jpg|gif|png|swf|mp3|mp4:表示针对这些后缀文件进行防盗链处理;

*.ixdbal.net ixdbal.net:这个请求可以正常访问上面指定的资源;

if {}:如果地址不是上边指定的地址就跳转到通过rewrite指定的地址,也可以通过return返回403错误;

更加复杂的防盗链可以使用HttpAccessKeyModule模块。

日志分割配置实例

可以通过Nginx的“USER1”信号控制来实现日志的自动切割,脚本如下:

#!/bin/bash
savepath_log='/home/nginx/logs'
nglogs='/usr/local/nginx/logs'

mkdir -p $savepath_log/$(date +%Y)/$(date +%m)
mv $nglogs/access.log $savepath_log/$(date +%Y)/$(date +%m)/access.$(date +%Y%m%d).log
mv $nglogs/error.log $savepath_log/$(date +%Y)/$(date +%m)/error.$(date +%Y%m%d).log
kill -USER1 `cat /usr/local/nginx/logs/nginx.pid`

把这段脚本加入定时任务中,在凌晨执行就可以实现每天日志分割了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值