资讯专栏INFORMATION COLUMN

不知道但是很常见的nginx问题

mykurisu / 924人阅读

摘要:使用问题及解决方法常见问题问题一相同多个虚拟主机优先级访问解决方法配置两个文件和根据系统中文件顺序读取问题二匹配优先级知识填坑进行普通字符精确匹配,完全匹配普通字符匹配,使用前缀匹配表示执行一个正则匹配解决方法根据匹配找到最优匹配优先级完全

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 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参数

推荐已写好waf:https://github.com/loveshell/...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39728.html

相关文章

  • PHP小知识点

    摘要:那些琐碎的知识点作者记录的的很奇特很难记的知识点。易错知识点整理注意和的区别中和都是输出的作用,但是两者之间还是有细微的差别。今天手头不忙,总结一下,分享过程中掌握的知识点。 深入理解 PHP 之:Nginx 与 FPM 的工作机制 这篇文章从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理,让我们真正理解 Nginx 与 PHP 是如何协同工作的。 PHP 那些琐碎的知识...

    hover_lew 评论0 收藏0
  • 单页应用部署方案

    摘要:所以单页应用的部署,需要将所有的页面请求都返回,浏览器下载了后会自动解析并导航到对应页面。总结单页应用与以前的常规多页面应用还是有区别的,开发过程与后端解耦了,同时会出现跨域鉴权以及应用部署的问题。 本文同步发布于我的个人博客上 - 单页应用的部署方案 本文主要简单讲一下单页应用的开发及部署方法,默认你懂一些服务端知识及nginx知识,如果有任何可以在下方评论留言。 单页应用 SPA(...

    yanbingyun1990 评论0 收藏0
  • Nginx 源码分析:ngx_hash_t(上)

    摘要:现在使用的各种哈希函数基本上只能保证较小概率出现两个不同的其相同的情况。而出现两个值对应的相同的情况,称为哈希冲突。中的哈希表需要指出的是,中自造的哈希表属于内部使用的数据结构,因此,并不是一个通用的哈希表。 源文件路径 版本:1.8.0 csrccoreNgx_hash.h srccoreNgx_hash.c 关于hash表 Nginx实现的hash表和常见的hash表大体...

    waruqi 评论0 收藏0

发表评论

0条评论

mykurisu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<