企业级Nginx服务基础到架构优化详解--(16-25条)

1六、Nginx站点目录及文件URL访问控制(防止恶意解析)php

1)根据扩展名限制程序或者文件被访问html

资源文件夹如用户上传的头像,防止恶意上传脚本病毒文件被解析执行nginx

server {web

location ~ ^/p_w_picpaths/.*\.(php|php5|sh|pl|py)$ { #指定目录限制访问浏览器

            deny all;缓存

        }服务器

        location ~ ^/static/.*\.(php|php5|sh|pl|py)$ {网络

            deny all;架构

        }运维

        location ~ ^/data/.*\.(php|php5|sh|pl|py)$ {

            deny all;

        }

        location ~ .*\.(php|php5)?$ { #必须配置在解析以前

            root html/www;

            fastcgi_pass        127.0.0.1:9000;

            fastcgi_index       index.php;

            include fastcgi.conf;

        }

}


2)禁止访问目录并返回指定HTTP代码

server {

    location /admin/ { return 404; }

}


3)限制网站来源IP

server {

location ~ ^/admin/ {

            allow 202.111.12.211;

           #allow 192.168.1.0/24; #也能够限制IP段

            deny all;

        }

}


企业问题案列:Nginx作方向代理的时候能够限制客户端IP吗?

方法一:用if来控制

if ( $remotea_addr = 10.0.0.110 ) {

  return 403;

}

if ( $remotea_addr = 10.0.0.111 ) {

  set $allow_access_root 'true';

}


方法二:利用deny和allow

location / {

  root html/blog;

  index index.php index.html index.html;

  deny 10.0.0.7;

  allow all;

}



1七、防止恶意解析访问企业网站

方法一

server {

  listen 80 default_server;

  server_name _;

  return 501;

}


方法二

server {

  listen 80 default_server;

  server_name _;

  rewrite ^(.*) http://www.lichengbing.cn$1 permanent;

}


方法三

server {

 if ($host !~ ^www/.lichengbing/.com$) {

  rewrite ^(.*) http://www.lichengbing.cn$1 permanent;

}



1八、Nginx图片及目录防盗链

网站图片被盗链最直接的影响就是网络带宽占用加大了,宽带费用变高了,网络流量忽高忽低,Zabbix频繁告警

因为购买了CDN加速,流量高了好几个G,瞬间损失好几万...

利用referer防盗链

location ~.* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {

    valid_referers none blocked *.lichengbing.cn lichengbing.cn;

 if ($invalid_referer) {

    rewrite ^/ http://www.lichengbing.cn/img/nolink.jpg

   }

}


#或者也可使用NginxHttpAccessKeyModule实现防盗链


1九、Nginx错误页面的优雅显示

server {

  error_page 403   /403.html; #当出现403错误时,会跳转到403.html页面

}



20、Nginx防爬虫优化

robots.txt机器人协议

网络爬虫排除标准,告诉搜索引擎哪些目录能够抓取,哪些禁止抓取

禁止下载协议代理

if ($http_user_agent ~* LWP::Simple|BBBike|wget) {

    return 403;

}


防止N多爬虫代理访问网站

if ($http_user_agent ~*

  “qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot”) {

   return 403;

}


禁止不一样浏览器访问

if ($http_user_agent ~* “Firefox|MSIE”)

{

rewrite ^(.*) http://blog.etiantian.org/$1 permanent

}


 

21 、限制HTTP请求方法

if ($request_method !~ ^(GET|HEAD|POST)$ ) {

   return 501;

}


只容许GET等,容许DELETE、SEARCH等

为防止***经过上传服务器执行***,也能够在上传服务器上作限制HTTP的GET

if ($request_method ~* ^(GET)$ ) {

  return 501;

}



2二、防DOS***

使用limit_conn_zone进行控制,控制单个IP或域名的访问次数,限制连续访问

limit_conn_zone $binary_remote_addr zone=perip:10m;

limit_conn_zone $server_remote_addr zone=perserver:10m;

server {

limit_conn perip 10;

limit_conn perserver 100;

}


#还可使用limit_req_zone进行控制,控制单个IP的访问速率


2三、使用CDN为网站内容加速

全国或全球的内容分布式缓存集群,其实质经过智能DNS判断用户的来源地域及上网线路,为用户选择一个最接近用户地域,以及和用户上网线路相同的服务器节点,提高用户浏览网站的体验

要加速的业务数据应该存在独立的域名,而后删除A记录解析,使用CNAME解析


2四、Nginx程序架构优化

解耦,一堆程序代码按照业务用途分开,而后提供服务,例如:注册登陆、上传、下载、浏览列表、商品内容、订单支付等都应该是独立的程序服务,只不过在客户端看来是一个总体而已,小公司最起码要作到的解耦是

01网页页面服务

02图片附件及下载服务

03上传图片服务


2五、使用普通用户启动Nginx(监牢模式)

降权思想,Nginx的Master进程使用的是root用户,worker进程使用的是nginx指定的普通用户,用root跑nginx的Master进程有两大问题:1是最小化权限分配遇到问题;二、网站一旦有漏洞,很容易丢掉root权限

降权执行的好处:

一、建立普通用户inca,用inca跑Nginx服务,开发运维都使用普通账号,只要和inca同组,照样能够管理nginx,还解决了root权限太大问题

二、职责分明,相关帐号负责维护程序和日志,出问题负首要责任

相关文章
相关标签/搜索