Nginx

分类下相关文章

nginx 同一域名下配置 yii2 的 frontend 和 backend

第一次看 yii2 的代码结构,非常不适应。居然 frontend 和 backend 分成了两个独立的文件夹。。。完全没有我大 laravel 的优雅之风。 而且大兄弟是用的 YiiBoot 这种冷门的东西。YiiBoot 类似于 Laravel 的 Backpack,使用 Yii2 + AdminLTE + mysql,开发高效的通用管理后台,同时可以自动生成 model controller 的代码。) 设置了 common\config\main.php 中的 MySQL 配置之后,就是 Nginx 配置了。 Github 上找到一个配置,稍作修改就能运行起来了。 server { ...

阅读全文...

nginx location 配置中 try_files, alias, root, index 的使用场合

需求场景 朋友让我帮忙挂一个网页,有点类似“钓鱼”的性质(开玩笑,没这么严重),就是找一个类似的域名,把原网站其中一个网页完全复制过来,修改其中的内容,然后给甲方看。但是,这个新域名的其他 URL 都需要跳转到原域名。 假设,原域名为 a.com, 新域名为 b.com。规则是: http://www.b.com/a/b.aspx?id=1024 显示“钓鱼”页,但是 http://www.b.com 需要 301 跳转到 http://www.a.com 解决方案 起初随手写了一套配置,怎么也满足不了需求,后来翻了一本关于 Nginx 的书,才有了思路。 配置如下 server { ...

阅读全文...

Nginx autoindex 共享下载目录的中文文件名显示问题

使用 Nginx autoindex 做了一个 Laravel 网站的共享文件下载目录,但是其中的中文显示成乱码。如下图 解决方法,Nginx config 文件中设置编码集即可,例如 utf-8 location = /qrcodes/ { charset utf-8; autoindex on; } ...

阅读全文...

使用 Nginx 代理转发解决 Weex 本地 H5 调试的跨域问题

使用 Weex 开发 APP, 有一个坑,就是如果使用浏览器进行接口调试,会遇到 js 的跨域问题。 虽然,APP 上不会有此问题,但是严重影响了调试。 例如,本地 H5 调试页面,报错 XMLHttpRequest cannot load http://x.x.x.x:8080/services/zhongweiService. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:1337' is therefore not allow ...

阅读全文...

慎用 Nginx 的 default_server

在新买的阿里云服务器上把部分网站迁移了过来,一时脑热把一个域名设置成了 default_server,为了使用 IP 测试网站是否部署的有问题。 例如: server { listen 80 default_server; server_name www.sunzhongwei.com _; ... } 问题很快就出现了,从百度统计上看到,有不少用户访问来自几个奇怪的域名。而流量来源是 Google。 也就是说,我的网站内容被 Google 通过不属于我的域名收录了。 通过 dig +trace 发现这几个域名都是把 IP 指向了我的新服务器。。。 这 ...

阅读全文...

屏蔽垃圾评论来源 IP 段

最近垃圾评论越来越猖獗,27.150.x.x 这个 IP 段尤为过分,逐个加 IP 黑名单已没有效果,只能批量屏蔽 部分现有的 Nginx IP 黑名单 deny 188.143.232.0/24; deny 91.200.12.0/24; deny 136.169.199.0/24; deny 114.37.239.162; deny 1.161.122.133; deny 27.150.247.255; deny 27.150.241.34; deny 27.150.246.221; deny 27.150.242.42; deny 27.150.24 ...

阅读全文...

nginx location 常见匹配规则

整理一下 nginx location 的常见规则。 需要注意的是,Nginx Location 规则并不是按照书写顺序进行优先匹配的。 而是按照规则优先级进行匹配。 ~* case insensitive matching, 不区分大小写的正则匹配 ~ case sensitive matching, 即区分大小写的正则匹配 = exact match, 精确匹配 ^~ 匹配任何以会面规则开头的地址,匹配以后,不在往下检索正则,立即采用这一条。 实例 location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 ...

阅读全文...

与垃圾评论的苦斗

早上扫了一眼博客,发现出现了大量的垃圾评论,本来想晚上再解决,但是这次频率太高了,几乎两分钟一条,实在是不能忍! 查看垃圾评论的来源 IP Nginx 日志 grep 'POST /comments' access.log | awk '{print $1, $4}' 还好这波垃圾评论的 IP 有规律 188.143.232.27 [11/Jan/2017:10:27:25 188.143.232.27 [11/Jan/2017:10:28:27 188.143.232.27 [11/Jan/2017:10:28:57 188.143.232.32 [11/Jan/2017:10:32:20 ...

阅读全文...

nginx

参考 Nginx开发从入门到精通 uwsgi timeout nginx 的配置更新: uwsgi_read_timeout 300; 默认为 60 秒,容易会超时。 uWSGI 的日志中会看到以下错误 write(): Broken pipe [plugins/python/wsgi_subhandler.c line 132] writev(): Broken pipe [plugins/python/wsgi_headers.c line 205] uwsgi read timeout user www-data; 格式 user user_name group_name; ...

阅读全文...

使用 Nginx 限制页面访问权限

写了一个小 web 应用,需要后台提交数据,但是这个页面只允许我一个人访问。 单独为这个页面增加用户权限系统,有点杀鸡用牛刀的感觉。还好用 Nginx 可以轻松搞定这件事。 htpasswd htpasswd is used to create and update the flat-files used to store usernames and password for basic authentication of HTTP users. 安装方法 sudo apt-get install apache2-utils 创建用户和密码 $ sudo htpasswd -c /etc/n ...

阅读全文...

Nginx 日志解析

Nginx 日志默认的格式 一条日志 192.34.61.118 - - [15/Jan/2015:16:03:46 +0800] "GET /parse-nginx-log-with-awk.html HTTP/1.1" 200 2148 "http://sunzhongwei.com" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" 对应的格式 $remote_addr - - [$time_local] "$requ ...

阅读全文...

Nginx user 配置引发的血案

在折腾完了 gulp livereload web server 之后,我才发现其实 Nginx 才是最靠谱的 web 调试服务。 毕竟写伪接口用 Nginx 要方便的多,也不用考虑 node 模块的一堆奇葩依赖。 但是 Nginx 也让我吐了一口血。白天在公司 Ubuntu 开发机上一切正常,但是回家后发现 Mac 下的 Nginx 一直报错。 stat() "/Users/zhongwei/test/index.html" failed (13: Permission denied), rewrite or internal redirection cycle whi ...

阅读全文...

如何限制恶意用户刷站

真实案例 收到短信报警,调用一些三方 API 接口超时。从 Nginx 看,发现是一个调用三方 API 接口被刷。 短时间内超过了百万次。不可避免的影响了正常业务。 刷站请求特征 短时间内,单 IP 针对单一有利用价值接口做大量请求 请求头为非浏览器 请求量暴涨,日请求总量为平时量的 20 倍 解决方法 在 Nginx 上限制单 IP 单位时间的请求数,以及单 IP 的并发连接数。 http { limit_req_zone $binary_remote_addr zone=one:10m rate=8r/s; server { location /sea ...

阅读全文...

Nginx 模拟 Backbone 请求的 JSON 接口

团队同步开发时,通常不能保证后台接口在开发初期可用。 所以,就需要前端自己模拟 API 的返回应答。 记录一下我是如何用 Nginx 来模拟 JSON 接口的 例如,我前端要发送一个请求 POST /api/new-stock 需要后台返回 JSON { 'err_code': 0, 'msg': 'OK' } 只需要将这个 JSON 结果写入 new-stock 文件,然后置于目录 /home/zhongwei/work/someproject/api/ 下。 这是对应的 Nginx 配置文件 server { listen 80 default_server; liste ...

阅读全文...