Nginx

隐藏Nginx版本号的最简单的方法

Nginx默认是显示版本号的,如:[root@hadooptest ~]# curl -I www.nginx.org HTTP/1.1 200 OK Server: nginx/0.8.44 Date: Tue, 13 Jul 2010 14:05:11 GMT Content-Type: text/html Content-Length: 8284 Last-Modified: Tue, 13 Jul 2010 12:00:13 GMT Connection: keep-alive Kee [详细]

在Nginx中使用X-Sendfile头提升PHP文件下载的性能(针对大文件下载)

很多时候用户需要从网站下载文件,如果文件是可以通过一个固定链接公开获取的,那么我们只需将文件存放到 webroot下的目录里就好。但大多数情况下,我们需要做权限控制,例如下载 PDF 账单,又例如下载网盘里的档案。这时,我们通常借助于脚本代码来实现,而这无疑会增加服务器的负担。 例如下面的代码:<php// 用户身份认证,若验证失败跳转authenticate();// 获取需要下载的文件,若文件不存在跳转$file = determine_file();// 读取文件内容$content=f [详细]

Nginx反向代理proxy_cache_path directive is not allowed错误解决方法

尝试使用Nginx进行反向代理过程中出现如下错误: 复制代码 代码如下: nginx: [emerg] "proxy_cache_path" directive is not allowed here in /etc/nginx/conf.d/default.conf:29提示意思“proxy_cache_path指令不被允许”,在官网上查找了相关说明,也没有发现问题,最后看应用范围才知道,他只能使用于http{ }部分,把proxy_cache_path放置于http部分即可解决此问题 参 [详细]

Nginx worker_connections配置太低导致500错误案例

最近一次安全培训,需要用到安全攻防平台,结果30几个人登录上去直接爆出500错误。不知道什么原因,后来找来SSH登录用户,密码,逐步排查,发现了Nginx worker_connections配置问题。 原来是Nginx配置文件中的worker_connections配置太低,只有50,导致与php-fpm交互过程中超出了connections限制,出现了500错误。直接将此参数的值改成10240就解决了此问题。 [详细]

通过浏览器查看nginx服务器状态配置方法

复制代码 代码如下: location /nginx-status {stub_status on;#access_log /var/log/nginx/mmt_nginx_status.log;access_log off;allow 192.168.0.10;deny all;#auth_basic "NginxStatus"; }访问URL:http://192.168.0.11/nginx-status 结果: 复制代码 代码如下: Active connections: 178 s [详细]

Nginx屏蔽F5心跳日志、指定IP访问日志

复制代码 代码如下: location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://mmt; if ( $remote_addr != 192.168.0.2 ) { access [详细]

Nginx Location 指令简明指南

Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令比较简单,但却是配置 Nginx 过程中不得不去了解的。 Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的"/uri/",可以是字符串或正则表达式。但如果要使用正则表达式,则必须指定前缀。 一、基本语法 1.location [=|~|~*|^~|@] /uri/ { … } 〖=〗 表示精确匹配,如果找到,立即停止搜索并立即处理此请求。 〖~ 〗 表 [详细]

Nginx批量添加二级子域名完美方案

对于批量添加虚拟主机的需求,Apache 有 vhost_alias 模块帮忙。Nginx 呢?其实神马都不需要,同样可以实现 Nginx 二级域名匹配子文件夹,且不匹配 "www",但可以匹配包含 "www" 的子域名。 首先看看目前网上搜到的方法。 复制代码 代码如下: if ( $host ~* (.*)\.(.*)\.(.*)) { set $subdomain $1; } location / { root html/$subdomain; index index.html [详细]

Nginx配置txt、pdf、doc、xls等文件直接下载的方法

使用Nginx时,如果要让一些附件比如 txt,pdf,doc等不直接在浏览器打开,而弹出另存为的对话框(也就是下载) 则可以在nginx的加上头配置如下: 复制代码 代码如下: if ($request_filename ~* ^.*\.(txt|pdf|doc|xls)$){ add_header Content-Disposition: 'attachment;'; } 如果客户端请求的文件以txt、pdf、doc、xls为后缀的话则会让浏览器出现另存为对话框。 [详细]

Nginx出现The plain HTTP request was sent to HTTPS port问题解决方法

今天在配置Nginx+SSL的时候出现如题的错误,后来与度娘一番云雨之后找到一个解决方法,挺有用,随手转之。 一般在vhost的配置中会有php解析的一段,如: 复制代码 代码如下: location ~ .*\.(php|php5)$ { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_param HTTPS $https if_not_empty; fastcgi_index index.php; [详细]

Laravel 5 学习笔记

1.Laravel 5 动态设置缓存引擎 复制代码 代码如下: \Config::set('cache.default','redis'); var_dump( \Config::get('cache.default') ); \Config::set('cache.default','memcached'); var_dump( \Config::get('cache.default') );2.Laravel 5 中 \ 和use Illuminate\Support\Facades\ [详细]

Nginx下配置codeigniter框架方法

原来在winserver+Apache环境下工作良好的一个微信公众号后台迁移到阿里云(环境:Ubuntu 64位 | PHP5.4 | Nginx1.6)下却频出 404,403,只能访问CI routes.php中设置的默认控制器等问题,后来上网查里下可能是路由设置问题,几经折腾最后按下面的设置解决问题。 1、修改网站配置文件 复制代码 代码如下: server { listen 80; server_name example.com;//自己的域名 root /al [详细]

nginx中的limit_req限速设置配置示例

WIKI: http://wiki.nginx.org/HttpLimitReqModule 漏桶原理(leaky bucket): http://en.wikipedia.org/wiki/Leaky_bucket 实例:#以用户二进制IP地址,定义三个漏桶,滴落速率1-3req/sec,桶空间1m,1M能保持大约16000个(IP)状态 limit_req_zone $binary_remote_addr zone=qps1:1m rate=1r/s; limit_req_zone $b [详细]

Nginx带宽控制(限速模块使用)

有个老项目,通过 Squid 提供文件下载功能,利用 delay_parameters 实现带宽控制,问题是我玩不转 Squid,于是盘算着是不是能在 Nginx 里找到类似的功能。好消息是 Nginx 提供了 limit_rate 和limit_rate_after,举个例子来说明一下: 复制代码 代码如下: location /download/ { limit_rate_after 500k; limit_rate 50k; }大概意思是:用户下载达到 500k 后,便控 [详细]

Nginx下配置301重定向的正确方法例子

之前给nginx做301重定向的时候经常会这样写: 复制代码 代码如下: server { listen 80; server_name www.jb51.net jb51.net; if ($http_host = www.jb51.net) { rewrite (.*) http://jb51.net$1; } ... }实际标准的写法应该是 复制代码 代码如下: server { listen [详细]