Nginx的一些基本配置_服务器

您好,我是码农飞哥,感谢您阅读本文!本文主要介绍Nginx的使用配置,Nginx是在实际开发中肯定会用到负载均衡的Web服务器。了解其配置对日常开发以及项目的部署有很大的用处。


  • 纯静态-html支持
    • 完整的配置参考如下:
  • 配置负载均衡
  • 防盗链
  • 总结
  • 参考


纯-html支持1

在配置Nginx的静态资源时有root和alias两种方式,比如现在在​​D:/test​​目录下有个文件laydate.js。默认配置的主机名是localhost;通过这两种方式分别配置:

  1. 通过root的方式
location /test {    root D:/; }

当访问​​http://localhost/test/laydate.js​​ 实际上访问的地址是​​D/test​​,也就是说文件必须要在root配置的地址+匹配的​​/test​​地址下才能找到,否则,则找不到。2. 通过alias的方式

location /demo {    alias D:/test;  }

当访问​​http://localhost/demo/laydate.js​​ 实际访问的地址是​​D:/test​​,也就说文件只需要在alias配置的路径下即可。目录与demo无关。有一个特殊点是,如果访问的文件在nginx的子目录下,比如html目录在nginx下:​​D:\develop\nginx-1.11.12\html​​,则只需要配置相对路径即可:

location /{   root html;  }

完整的配置参考如下:

events {    worker_connections  1024;}http {    server{ listen  80;  #服务器的域名,可以改成你需要的任何域名 server_name localhost  # 日志记录 access_log  logs/test-access.log; location /{   index index.html;   root html;  } location /test {    root D:/; }  location /demo {   alias D:/test;  }   } }

配置负载均衡

Nginx的一个重要功能就是用作负载均衡的Web服务器。在分布式场景下经常要将一个域名的请求均衡到本机不同的端口,或者均衡到不同的主机上。

http { upstream myproject { server 127.0.0.18000 weight=3; server 127.0.0.18001; server 127.0.0.18002; }
server { listen 80; server_name www.domain.com; location / { #请求转向后端定义的均衡模块,这个配置就是upstream myproject,直接找到location/根目录下的proxy_pass,反向代理 proxy_pass http//myproject; } location /exp-h5 { proxy_pass http//myproject/exp-h5/; } }}

通过upstream属性主要的作用就是配置多个IP地址,均衡后端的实例,nginx的upstream支持五种算法分配方式:

算法分配方式

分配方式解释

轮询(默认)

每个请求按时间顺序逐一分配到后端不同的服务器,如果后端某台服务器down掉,自动剔除,待恢复后自动添加上

weight权重

指定轮询权重,权重越高处理的请求就越多,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认为1,weight越大,负载的权重就越大

ip hash

每个请求根据访问的IP的hash结果分配,这样每个访客固定访问同一个后端服务器,可以解决session的问题,一般用于登录会话

fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配

url hash(第三方)

按照访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

举个栗子:

weight权重配置
upstream testproxys{        server  172.20.22.36:50001 weight=1 max_fails=2 fail_timeout=30s;           server  172.20.21.41:50001 weight=1 max_fails=2 fail_timeout=30s;   }

upstream的fail_timeout和max_fails参数是用来判断负载均衡upstream中某个server是否失效。在30s与该服务连接尝试失败了两次,则认为该服务已经失效,在接下来30s内,nginx不会将请求分发给失效的服务。失效时间与响应时间无关,不会影响响应时间。

ip hash
upstream bakend {         ip_hash;         server 192.168.0.14:88;         server 192.168.0.15:80;    }

fair(第三方)

upstream backend {    server server1;    server server2;    fair;}

url_hash(第三方)

upstream backend {    server squid1:3128;    server squid2:3128;    hash   $request_uri;    hash_method crc32;}

防盗链

防盗链是为了防止网站被非法的访问。

location ~* \.(gif|jpg|png|swf|flv)${    valid_referers none blocked *.csdn.net server_names ~\.google\. ~\.baidu\.;    if ($invalid_referer) {     rewrite ^/         return 403;    }}

如果页面的来源不是​​*.csdn.net​​(自己的网站)就会返回true,并跳转到403页面,特殊的如果server_names(服务器)是google或者baidu,则返回false。

总结

本文简单介绍了Nginx的一些基本配置。



Nginx的一些基本配置_nginx_02

1