在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
以下就是我们整理的nginx常见的问题,解决办法我们例举了1-2种,大家可以都测试下。 常见问题 问题一:相同server_name多个虚拟主机优先级访问 server{ listen 80; server_name server1; location{...} } server{ listen 80; server_name server2; location{...} } 解决方法: 配置两个conf文件:server1.conf 和 server2.conf 根据Linux系统中文件顺序读取 问题二:location匹配优先级 location = /code1/ { rewrite ^(.*)$ /code1/index.html break; } location ~ /code.* { rewrite ^(.*)$ /code3/index.html break; } location ^~ /code { rewrite ^(.*)$ /code2/index.html break; } 知识填坑: =:进行普通字符精确匹配,完全匹配 ^~:普通字符匹配,使用前缀匹配 ~ \~*:表示执行一个正则匹配() 解决方法: 根据匹配找到最优匹配 优先级:完全匹配>正则匹配>前缀匹配 问题三:try_files使用 location / { try_files $uri $uri/ /index.html; } 解决方法: 按顺序检查文件是否存在 问题四:Nginx的alias和root区别 location /request_path/img/ { root /local_path/img/; } location /request_path/img/ { alias /local_path/img/; } 解决方法: root设置,最终请求的路径为/local_path/img/request_path/img/ alias设置,最终请求为/local_path/img/ 问题五:通过多层代理,传递用户真实IP 解决方法: set x_real_ip=$remote_addr $x_real_ip=真实IP 性能优化问题 优化考虑点: 当前系统结构瓶颈,如观察指标、压力测试 了解业务模式,如接口业务类型、系统层次化结构 性能与安全 接口压力测试工具:ab 安装:yum install httpd-tools 使用:ab -n 2000 -c 20 http://127.0.0.1/ nginx关于系统的优化点: 网络、系统、服务、程序、数据库 控制文件句柄数量,文件句柄就是一个索引 CPU亲和,使进程不会在处理器间频繁迁移,减少性能损耗 vim /etc/nginx/nginx.conf user nginx; worker_processes 16; worker_cpu_affinity auto; worker_rlimit_nofile 15535; events{ use epoll; worker_connections 10240; } http{ include /etc/nginx/mime.types; default_type application/octet-stream; #Charset charset utf-8; log_format main ''; access_log /var/log/nginx/access.log main; #Core module sendfile on; keepalive_timeout 65; #Gzip module gzip on; gzip_disable "MSIE [1-6]\."; gzip_http_version 1.1; #Virtal server include /etc/nginx/conf.d/*.conf; } nginx安全问题及防范策略 恶意行为 问题:爬虫行为和恶意抓取、资源盗用 解决方法: 基础防盗链功能:不让恶意用户轻易的爬取网站对外数据 secure_link_module模块:对数据安全性提高加密验证和失效性,对一些重要数据使用 access_module模块:对后台、部分用户服务的数据提供IP监控,如规定IP等 应用层攻击 问题一:后台密码撞库,通过密码字典不断对后台系统登录性尝试,获取后台密码 解决方法: 后台密码复杂的,大小写数字字符等 预警机制,同一IP的频繁访问 access_module模块:对后台、部分用户服务的数据提供IP监控 问题二:文件上传漏洞,利用可以上传的接口将恶意代码植入服务器中,再通过url访问以执行 解决方法: 针对一些木马和后缀等做一定的处理 location ^~ /upload{ root /usr/share/html; if($request_filename ~*(.*)\.php){ return 403; #拒绝访问 } } 问题三:SQL注入,利用未过滤或未审核的用户输入的攻击手段,让应用运行本不应该运行的SQL代码 解决方法: 针对' or 1=1 #等常见注入代码进行检测 搭建安全waf,针对渗透规则写正则表达式 nginx防攻击策略 使用nginx+Lua搭建安全waf防火墙 防火墙功能: 拦截Cookie类型攻击 拦截异常post请求 拦截cc攻击,频繁访问 拦截URL,不想暴露的接口 拦截arg参数 |
请发表评论