美文网首页
Nginx基础入门

Nginx基础入门

作者: MC_Honva | 来源:发表于2018-09-24 20:52 被阅读12次

应用场景

  • http服务器。Nginx是一个http服务可以独立提供http服务。(可以做网页静态服务器)
  • 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
  • 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用Nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
反向代理
    server {
        listen   80;
        server_name  www.honva6.dev.com;

        location / {
            proxy_pass 127.0.0.1:8080;
            index  index.html index.htm;
        }

listen表示nginx默认监听的端口号,server_name表示用户访问的域名地址,location /表示拦截所有的请求,拦截后跳转到127.0.0.1:8080端口地址

负载均衡
  • 轮询机制
  • 权重
  • ip绑定
#upstream backserver配置轮询的服务器地址,weight表示各个服务器的权重,权重按比例生效而不是按数量。比如2:1 和 4:2是相同的
    upstream backserver{
        server 127.0.0.1:8080 weight=2;
        server 127.0.0.1:8081 weight=1;
    }
    
    server {
        listen   80;
        #此处需要配置服务器的对应代理
        server_name  www.honva6.dev.com;   

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://backserver;
            index  index.html index.htm;
        }
    }
宕机轮询机制

当集群服务器中有一台宕机,会自动访问到集群中的下一台服务器,不影响用户操作
。也可以使用第三方工具keepaalive,当机器宕机后会自动执行重启服务器的脚本。

location / {
            proxy_pass http://backserver;
            index  index.html index.htm;
            #宕机轮询配置如下
            #连接时间超过1s,自动轮询到下一台服务器
            proxy_connect_timeout 1;
            # 发送时间相应超过1s,自动轮询到下一台服务器
            proxy_send_timeout 1;
            # 读取时间超过1s,自动轮询到下一台服务器
            proxy_read_timeout 1;
        }

Nginx层面解决跨域问题
server {
        listen       80;
        server_name  www.itmayiedu.com;
        #当访问域名A的时候,跳转到A对应的地址
        location /A {
            proxy_pass  http://a.a.com:81/A;
            index  index.html index.htm;
        }
        #当访问域名B的时候,跳转到B对应的地址
        location /B {
            proxy_pass  http://b.b.com:81/B;
            index  index.html index.htm;
        }
    }
Nginx防盗链
server {
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
    {
    # 
    valid_referers blocked  *.honva6.dev.com honva6.dev.com;
    if($invalid_referer) {
    rewrite ^/ http://www.honva6.dev.com/404.jpg;
    }
    expires 30d;
}
Nginx配置DDOS
http{
    #触发条件:所有访问ip 限制每秒2个请求
    limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s;
        server {
            ...
            location /login.html {
            #引用one共享内存区来实现限制访问/login.html的目的
            limit_req zone=one;
            ...
        }
    }
}

各参数说明:

  • $binary_remote_addr :客户端的ip,二进制远程地址
  • zone=one:10m : 定义zone名字叫one,并为这个zone分配10M内存,用来存储会话(二进制远程地址),1m内存可以保存16000会话
  • rate=2r/s : 每秒2个请求

后续....

相关文章

网友评论

      本文标题:Nginx基础入门

      本文链接:https://www.haomeiwen.com/subject/biuhoftx.html