nginx配置文件详解

nginx作为一个反向代理器和负载均衡器,它的优点体现在许多方面,我们先从配置文件入手,看看nginx可以实现的功能:
一.nginx的虚拟主机:
1.在nginx目录下编辑中配置文件,生成虚拟主机:

虚拟主机技术主要应用于HTTP(Hypertext Transfer Protocol,超文本传输协议)服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。

server {
        listen 80;
        server_name www.westos.org;    # 域名为www.westos.org

        location / {
                root /www1;    # 第一台虚拟主机的发布目录
                index index.html;
        }
}

server {
        listen 80;
        server_name www.linux.org;    # 域名为www.linux.org

        location / {
                root /www2;     # 第二台虚拟主机的发布目录
                index index.html;
        }
}

2.在根下建立两个目录/www1和/www2,在里边写默认发布文件index.html
3.在物理机做解析172.25.1.5 www.westos.org www.linux.org
4.重启nginx

nginx -s reload

二.实现https加密
1.编辑nginx的配置文件配置文件

# HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  www.westos.org;

        ssl_certificate      cert.pem;      # https认证的锁和钥匙
        ssl_certificate_key  cert.pem;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   /www1;
            index  index.html index.htm;
        }
    }

nginx配置文件详解_第1张图片
2.nginx -t 检测语法是否错误
3.在cd /etc/pki/tls/cd cert目录下

make cert.pem   #获得证书
cp cert.pem /usr/local/lnmp/nginx/conf/ 
#将锁子和钥匙放在nginx的配置文件目录下

4.重新加载nginx,在测试端测试,发现浏览器的地址栏前会自动加上https://

nginx -s reload

nginx配置文件详解_第2张图片
nginx配置文件详解_第3张图片
nginx配置文件详解_第4张图片
三.重定向:
1.将westos.org 重定向到 www.westos.org

server {
        listen 80;
        server_name www.westos.org westos.org;
        rewrite ^(.*)$ https://www.westos.org permanent;   #用通配符表示这两个域名
        # 访问westos.org或www.westos.org的时候跳转到https://www.westos.org
        #location / {
        #       root /www1;
        #       index index.html;
        #}
}

nginx配置文件详解_第5张图片
2.将www.westos.org/bbs 定向到 bbs.westos.org(将westos下的一个子目录定向到一个新的站点)

server {
        listen 80;
        server_name www.westos.org westos.org;

        rewrite ^/bbs$ https://bbs.westos.org permanent;
        #利用通配符实现重定向  permanent表示永久重定向
        location / {
                root /www1;
                index index.html;
        }
}

在物理机解析写bbs.westos.org,将/www2下改为bbs.westos.org
nginx配置文件详解_第6张图片
3.将www.westos.org/bbs/index.html重定向到 https://bbs.westos.org/index.html

server {
        listen 80;
        server_name www.westos.org westos.org;

        #rewrite ^(.*)$ https://www.westos.org$1 permanent;
        rewrite ^/bbs$ https://bbs.westos.org permanent;
        rewrite ^/bbs/(.*)$ https://bbs.westos.org/$1 permanent;
        location / {
                root /www1;
                index index.html;
        }
}

在/www1下写bbs目录:index.html—>www.westos.org -bbs
nginx配置文件详解_第7张图片
4.反向重定向bbs.westos.org—> https://www.westos.org/bbs/

server {
        listen 80;
        server_name www.westos.org westos.org;

        #rewrite ^(.*)$ https://www.westos.org$1 permanent;
        #rewrite ^/bbs$ https://bbs.westos.org permanent;
        #rewrite ^/bbs/(.*)$ https://bbs.westos.org/$1 permanent;
        location / {
                root /www1;
                index index.html;
        }
}

server {
        listen 80;
        server_name bbs.westos.org;
        rewrite ^(.*)$ https://www.westos.org/bbs$1;
        #location / {
        #        root /www2;
        #       index index.html;
        #}
}

nginx配置文件详解_第8张图片
四.对客户端并发量,下载速度的限制
1.限制客户端请求的并发量为1

  #gzip  on;
    limit_conn_zone $binary_remote_addr zone=addr:10m;

   location /download {    # download是客户端访问nginx的一个发布目录
        limit_conn addr 1; # 并发量为1
}

模拟客户端的请求,并发量为1:错误请求为1,在日志中查看每个请求均是200正确
nginx配置文件详解_第9张图片
nginx配置文件详解_第10张图片
并发量如果是10,大于1:有一个错误请求,在日志中查看只有一个请求被正确回应
nginx配置文件详解_第11张图片
nginx配置文件详解_第12张图片
2.限制客户端下载速率为50k

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

location /download {
        limit_conn addr 1;
        limit_rate 50k;    # 限制速率为50k
        limit_req zone=one burst=5;
        }

nginx配置文件详解_第13张图片
五.访问控制
1,允许ip为172.25.1.250的主机访问,别的主机访问全部禁止

   location /admin/{
        allow172.25.1.250;
   # ip为172.25.1.250的主机到达,和第一个访问控制的条件匹配,允许通过
   # 别的ip的主机到达和deny中的all匹配,禁止访问     
        deny all;
        }

别的ip不允许:
nginx配置文件详解_第14张图片
2.允许特定网段访问
location /admin/{
allow 172.25.0.0/24; # 允许172.25.0.0/24这个网段访问
deny all;
}

六.防止恶意

server {
        listen       80;
        server_name  _;     # 所有主机到达,访问默认页面,恢复500报错或重定向到指定站点
        #return 500;
        rewrite ^(.*) http://www.westos.org permanent;       
        # 访问默认主页时,跳转到www.westos.org

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            #root   /usr/local/tomcat/webapps/ROOT;
            index index.html index.htm;
        }

nginx配置文件详解_第15张图片
七.网页乱码问题,nginx默认不支持汉语,为了防止网页乱码的问题,我们可以这样解决:
nginx配置文件详解_第16张图片

location /admin/{
        #allow 172.25.1.250;
        #deny all;
        charset utf-8;
        }

nginx配置文件详解_第17张图片
八.去掉不必要的日志记录

access_log off;   # 在要访问的位置

九.防盗链机制
在一台主机的apach默认发布文件下:





   # 盗取server5上的图片





# 通过这种方式我们可以盗取server5上的图片信息,从而达到“没有付出而得到客户端流量的盗链行为”

nginx配置文件详解_第18张图片

在server5的配置文加中加上防止盗连的条件(如果访问的域名是jay.westos.org),那么不用防
location ~ .*\.(gif|jpg|png)$ {
        valid_referers jay.westos.org;
        if ($invalid_referer) {
                return 403;
        }

nginx配置文件详解_第19张图片
如果想要在防盗连的界面出来防盗连的图片,那么可以将该盗连访问重定向到指定图片位置:

location ~ .*\.(gif|jpg|png)$ {
        valid_referers jay.westos.org;
        if ($invalid_referer) {
                #return 403;
                rewrite ^/ http://bbs.westos.org/daolian.jpg;   # 重定向到名为daolian的图片
        }

server {
        listen 80;
        server_name bbs.westos.org;
        #rewrite ^(.*)$ https://www.westos.org/bbs$1;
        location / {
                root /www2;
               index index.html;
        }
在/www2下放防盗连的图片...

nginx配置文件详解_第20张图片

你可能感兴趣的:(nginx配置文件详解)