Nginx基础入门

Nginx介绍

Nginx是一个高性能的Http和反向代理Web服务器,也提供了IMAP/POP3/SMTP服务。占内存小,可以实现高并发连接、处理响应快。

Nginx应用

1、Http服务器。nginx是一个Http服务可以独立提供Http服务,也可以做网页静态服务器。
2、虚拟主机。可以实现在一台服务器虚拟出多个网站。
3、反向代理,负载均衡。
4、配置安全管理,比如可以使用nginx搭建API接口网关,对每个接口服务进行拦截。

反向代理

1、修改本地hosts文件,相当于域名服务器。

127.0.0.1 www.feigege.com

2、修改nginx.conf配置文件

#server作用:内部创建的服务器
server {
    #服务器监听端口
    listen   80;
    #配置拦截的域名
    server_name  www.feigege.com;
    #对所有的请求做负载均衡+反向代理
    location / {
        #代理
        proxy_pass http://127.0.0.1:8080;
        #默认页面
        index  index.html index.htm index.jsp;
        #拦截域名后:跳转的路径
        root /usr/local/tomcat/webapps/myproject/WEB-INF/page
    }
}

3、访问www.feigege.com

负载均衡

负载均衡,英文名称为Load Balance,其意思就是把请求,分摊到多个操作单元上进行执行。

1、轮询负载

upstream myserverteam{ 
    #配置节点服务   
    server 127.0.0.1:8080; 
    server 127.0.0.1:8080; 
}

server {
        listen       80;
        server_name  www.feigege.com;
        location / {
			proxy_pass http://myserverteam;
            index  index.html index.htm index.jsp;
            #设置连接超时时,一旦超时,就认为节点宕机了。
            proxy_connect_timeout 60;
        }
}

2、权重负载

upstream myserverteam{ 
    #配置节点服务,两节点接收到的请求比例1:3 
    server 127.0.0.1:8080 weight=1; 
    server 127.0.0.1:8080 weight=3; 
}

3、IP绑定:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstream backserver { 
    ip_hash; 
    server 127.0.0.1:8080; 
    server 127.0.0.1:8080; 
} 

Nginx跨域

新建一个server,配置数据。

server {
        listen       80;
        server_name  www.feigege.com;
        location /A {
		    proxy_pass  http://myprojectOne.com:8081;
			index  index.html index.htm;
        }
		location /B {
		    proxy_pass  http:/myprojectTwo.com:80821;
			index  index.html index.htm;
        }
    }

这样配置,两个项目A、B在浏览器上是用的共同的域名,在A项目中请求B项目资源,浏览器就会放行了。

Nginx防盗链

#~表示拦截一切请求,
location ~ .*.(jpg|jpeg|JPG|png|gif|icon)$ {
        #验证域名
        valid_referers blocked http://www.itmayiedu.com www.itmayiedu.com;
        #验证未通过,返回403页面
        if ($invalid_referer) {
            return 403;
        }
        #缓存过期时间30天
        expires   30d;
        #是否记录访问日志
        access_log off;
}

Nginx配置DDOS

#每两秒钟接收一个客户端IP的请求(大约等同于每分钟30个请求)
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;
server {
    location /login.html {
    limit_req zone=one; 
    }
}
原文地址:https://www.cnblogs.com/feiqiangsheng/p/11287120.html