Nginx配置实例

来源:互联网 发布:怎么把mac照片导入u盘 编辑:程序博客网 时间:2024/06/11 16:30

虚拟主机配置实例

下面在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/bashsavepath_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).logmv $nglogs/error.log $savepath_log/$(date +%Y)/$(date +%m)/error.$(date +%Y%m%d).logkill -USER1 `cat /usr/local/nginx/logs/nginx.pid`

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

原创粉丝点击