博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
不知道但是很常见的nginx问题
阅读量:6436 次
发布时间:2019-06-23

本文共 2258 字,大约阅读时间需要 7 分钟。

nginx使用问题及解决方法

常见问题

问题一:相同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

nginx关于系统的优化点:

  • 网络、系统、服务、程序、数据库
  • 控制文件句柄数量,文件句柄就是一个索引
  • CPU亲和,使进程不会在处理器间频繁迁移,减少性能损耗
vim /etc/nginx/nginx.confuser 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参数

推荐已写好waf:

转载地址:http://xohga.baihongyu.com/

你可能感兴趣的文章
怎样才算是一个合格的网页设计师?
查看>>
10天学安卓-第九天
查看>>
Git协作流程
查看>>
getResource(String name)用法及源码分析
查看>>
神奇的事情,不同进程监听同一个端口,居然都成功
查看>>
PreparedStatement批量处理的一个Framework(原创)
查看>>
3Dmax+blend+WPF综合运用
查看>>
zabbix启动无效,无法监听10051
查看>>
Google C++ Coding Style:右值引用(Rvalue Reference)
查看>>
docker登录
查看>>
php安装filter扩展模块
查看>>
Android——发送和接收广播
查看>>
上海网域CEO肖确伟:IDC精细化运营探讨
查看>>
DirectShow开发快速入门之慨述
查看>>
Kubernetes排错:用容器的元数据提供新思路
查看>>
《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.12. File-5.22...
查看>>
C++判断文件是否存在
查看>>
DockOne微信分享(八十四):Docker在B站的实施之路
查看>>
新加坡樟宜机场将进入“刷脸”时代 自助通关是亮点
查看>>
PHP设计模式——享元模式
查看>>