Articles of nginx

如何限制nginx autoindexing?

有没有办法限制自动索引到特定types? 我想要的只是列出.svg文件在我的nginx服务器上的特定目录,并隐藏其他文件types。

为什么这些网页被PHP处理?

我已经在Ubuntu 14.04服务器上创build了一个新的nginx和php5-fpm安装,并进行了如下所示的更改,以便configuration工作。 当我浏览到包含index.php的目录或尝试浏览到phpinfo.php文件时,浏览器尝试下载文件(即PHP不处理文件并返回响应)。 如果我浏览到任何其他的PHP文件,如process.php或test.php它运行良好。 configuration 更新/etc/php5/fpm/pool.d/www.conf来侦听TCP套接字 listen = 127.0.0.1:9000 文件:/etc/nginx/nginx.conf user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 文件:/ etc […]

瓶颈在哪里 – nginx缓慢的文件服务

我在Ubuntu 14+上有nginx 1.6.2 。 我主持了几个“大”文件 – 从20mb到60mb – 不断访问(它可能超过1000个连接同时在晚上高峰)。 他们很less在一两周内更换。 服务器还承载了大量用户上传的图像,这些图像也经常被访问,但可以根据用户意愿进行更改。 图像通过php上传。 所以,问题是 – 这些大文件下载真的很慢。 有时甚至会连接。 这里有一些日志和configuration: Nginxconfiguration user www-data; worker_processes auto; pid /run/nginx.pid; worker_rlimit_nofile 65000; events { worker_connections 4096; multi_accept on; use epoll; } http { client_body_buffer_size 50m; sendfile off; output_buffers 2 64k; tcp_nopush on; tcp_nodelay on; keepalive_timeout 120s; types_hash_max_size 2048; directio 10m; include […]

nginx:正则expression式不能在URL重写

我有http://sample.cervo02.com 。 我正在尝试获取https://cervo02.com/sample 。 我试过几个redirect他们都没有工作。 rewrite ^([^.]*)$ https://cervo02.com/$1 last; 返回https://cervo02.com// 另一个是rewrite ^([^.]*).cervo02.com$ https://cervo02.com/$1 last; 返回一个404和URL不会被重写。 完整的服务器主机定义 upstream backend { server 192.167.1.79:8080; } proxy_cache_path /tmp/cache levels=1:2 keys_zone=my-test-cache:8m max_size=5000m inactive=300m; server { listen 80; server_name sample.CERVO02.com; rewrite ^([^.]*)$ https://cervo02.com/$1 last; } server { listen 443 ssl spdy; server_name CERVO02.com; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; location / […]

Nginx:如何从htpasswd授权中排除含有查询参数的URL

一个WordPress站点通过使用htpasswd的HTTP授权来保护/wp-login.php。 Web服务器是Nginx。 下面给出相同的configuration。 与插件关联的URL使用wp-login.php?查询参数来pipe理外部用户。 url的例子是: http://beta.timepass.com/wp-login.php?action=wordpress_social_authenticate&mode=login&provider=Facebook 我只需要允许那些匹配查询参数action=wordpress_social_authenticate URL绕过htpasswd。 我已经尝试了一些东西,但无处可去! Nginx在if条件下不会将auth_basic "off" 。 Nginxconfiguration参考: server { listen 80; server_name beta.timepass.com; root /var/www/projects/beta.timepass.com; index index.php index.html index.htm; autoindex off; access_log /var/log/nginx/beta.timepass.com-access.log; error_log /var/log/nginx/beta.timepass.com-error.log; try_files $uri $uri/ /index.php?$args; ## Disallow direct access to wp-login.php location ~* ^/wp-login.php { #satisfy any; #allow 192.168.1.0/24; allow 192.168.1.157; auth_basic "Site Needs You […]

当使用proxy_pass到Apache时,Nginx会在Host头之前忽略HTTP头

当Nginx发送以下请求时,Apache无法获得“app_version”HTTP头。 我通常使用apache_request_headers()来获取所有标题。 我也检查了$_SERVER的内容 GET /stuff HTTP/1.0 app_version: 1.0 Host: example.com 但是,当发送下面的头文件时, apache_request_headers()会返回“app_version”HTTP头文件! GET /stuff HTTP/1.0 Host: example.com app_version: 1.0 问题是,我正在使用第三方REST客户端(Retrofit),它似乎以随机顺序发送标题,所以我不能简单地通过首先发送主机标头来解决这个问题。 无论如何,我不明白为什么一个带有下划线的标题或者它被放置的顺序会影响任何东西。 (头部格式与HTTP规范兼容)。 我想解决当前的问题,而不是一个解决方法。 我有以下的Nginxconfiguration: underscores_in_headers on; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass_request_headers on; proxy_pass http://127.0.0.1:8080; } 什么会导致这种不一致?

Django邮件报告被Gmail阻止

我configuration我的Django 1.6框架发送错误报告到Gmail帐户,所以我可以检查他们。 在此之前,虽然我不得不定义filter来捕获发件人邮件地址我configuration为这些电子邮件报告被标记为“非垃圾邮件”和正确分类。 虽然我每次打开报告时都会出现一条消息,例如“这不是垃圾邮件”文件夹,因为您将其标记为“非垃圾邮件”。 …直到几天前。 报告停止到达。 我检查了/var/log/mail.log中的日志,发现这个: Our system has detected that this message is 550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked. Please visit 550-5.7.1 http://support.google.com/mail/bin/answer.py?hl=en&answer=188131 for 550 5.7.1 more information. t17si11455054wiv.44 – gsmtp (in reply to end of DATA command)) 几乎所有的错误报告都被Gmail阻止,所以我参考了Google的“批量发件人指南”来尝试解决此问题。 我的邮件服务器使用一致的IP地址,并且域已经获得了正确的反向DNSlogging,但发件人地址可能会根据发生错误的子域更改(例如:[email protected],如果subdomain1抛出exception,或者[email protected]如果是子域2)。 […]

使用nginx或mongoose或mongrel或其他微型Web服务器,如何从一个根目录或顶级目录中为子目录提供某些文件

我有一个目录结构让我们来说 /user/me/project1 /usr/me/project1/private/stuff /usr/me/project1/whatever/bla/bla /usr/me/project1/pdf/bla.pdf /user/me/project2 /user/me/project2/priv1 /usr/me/project2/priv2 /usr/me/project2/pdf/sdfasfa.pdf 无论如何,我想要加载一个ROOT在/用户/我的networking服务器但是,当我加载页面在http:// localhost我只想看到所有.pdf文件的“清单”就在那里。 理想情况下,我甚至不想显示任何“子目录”,我希望他们“忽略”/隐藏。 基本上我想在一个列表中看到所有的PDF文件。 我可以重写任何方法等,我会使用nginx PREFER,但我确定除了Apache的其他build议,但任何可以轻松地运行.jar或编译容易与gcc像nginx是好的。 哦,我不想改变文件系统本身的任何东西,因为这些pdf文件得到更新,所以我想要一个简单的方法来将它们全部分享到一个列表中,而不必点击一堆子目录来find它们。 如果不能完成,最好的办法就是“隐藏”某些目录,或者隐藏所有的“except”,这样我就可以只显示“pdf”/ pdf / dirs。

连接超时后,Nginx PHP-FPM停止

我有一个服务器与Nginx和PHP-FPM为单个Web应用程序。 一切正常,直到我请求一个超过60秒的页面。 然后PHP停止响应任何请求。 产生这个问题的步骤是: 1:我提出一个要求php / mysql超过60秒的返回。 在这一点上,一切仍然有效。 所有额外的stream量仍然正常工作。 2:然后我在UI中发出另一个请求(更改页面)。 3:现在所有的PHPstream量都停止了 – PHP不再提供内容,所有的请求都会等待,直到超时,Nginx返回“发生错误”。 日志显示… upstream timed out (110: Connection timed out) while reading response header from upstream … Web应用程序是AngularJS向PHP发出AJAX请求。 我正在testingChrome中的用户界面,并使用Safari请求testing页面,因此,Chrome并不是一件愚蠢的事情,而是在等待一个请求。 重新启动php-fpm修复了这个问题。 我已经尝试设置紧急重置,并没有效果。 日志文件/var/log/php5-fpm.log是空的。 PHP-fpm.conf [global] pid = /var/run/php5-fpm.pid error_log = /var/log/php5-fpm.log include=/etc/php5/fpm/pool.d/*.conf www.conf [www] user = www-data group = www-data listen = /var/run/php5-fpm.sock listen.owner = […]

无法成功进入子域

我在这里有一个小问题,试图进入一个子域,我想让你清楚我使用的命令行,因为实际上让我感到困惑。 域的服务器块 listen 80; server_name just4bettors.mobi www.just4bettors.mobi; root /home/c0pt/capilleira/capilleiraclickandgamblemobile/www; 为子域名 listen 80; server_name www.desktop.just4bettors.mobi desktop.just4bettors.mobi; root /home/c0pt/capilleira/capilleiraclickandgambleweb/dist; 域名在这里工作很好,但没有子域,一旦我把www.desktop.just4bettors.mobi在浏览器中,我得到一个消息Server not found 现在,我在命令行中有这个问题 如果我做 $ host just4bettors.mobi just4bettors.mobi has address 190.171.28.156 而上面的是正确的,但如果我这样做: $ host desktop.just4bettors.mobi Host desktop.just4bettors.mobi not found: 3(NXDOMAIN) 好的,那里说,子域没有find。 如果我做 $ dig +trace desktop.just4bettors.mobi ; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> +trace desktop.just4bettors.mobi ;; global options: +cmd […]