Articles of nginx

如何在NGINX中继续进行位置匹配?

我在(虚拟)服务器上设置了fastcgi_cache 。 但是,我想closures文件夹wp-admin和文件wp-login.phpcaching。 configuration的问题是当文件夹或文件匹配时,它不会将请求传递给PHP,而NGINX服务于.php文件。 (我已经简化了configuration文件,所以它不是太大。) fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=cache:30m; fastcgi_cache_key "$scheme$host$uri$is_args$args"; server { … fastcgi_cache cache; fastcgi_cache_valid 200 10m; location / { index index.html index.php; } location ~* ^/wordpress/(wp-login\.php|wp-admin) { fastcgi_cache off; } location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 问题在于,PHP从/wordpress/wp-login.php获取请求。 这个问题怎么解决?

NGINX – 删除URL末尾的index.php

我可以通过“www.dom.com/mypage”访问我的网页,该网页将redirect到“www.dom.com/mypage/”。 “www.dom.com/mypage/index.php”是主要的文件,但我想从url中删除这个,所以如果你input这个文件,它会将你redirect到“www.dom.com/mypage/”。 所有链接显示正确的页面,但我想从URL中删除它。

通过反向代理时获取客户端IP

在我的VPS我主持几个网站。 每个人都住在自己的Linux Container中。 例如 站点#1 – > 10.0.3.111 网站#2 – > 10.0.3.112 网站#3 – > 10.0.3.113 要知道在哪里redirect每个请求,我在10.0.3.101另一个Linux容器中也有一个反向代理nginx 我遇到的问题是,在运行Laravel的其中一个网站中,我尝试获取客户端的IP,如下所示: <p>IP Address: {{ Request::getClientIp() }}</p> 问题是,我一直在10.0.3.101 ,而不是客户端的IP。 我猜Laravel正在获取请求出现的最后一个主机的IP,而不是最初发起请求的主机的IP。 有没有办法,我可以得到这个知识产权,而不改变这种结构? configuration 这是我的nginx主机文件: server { listen 80; server_name example.com www.example.com; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://10.0.3.115; } }

RTMP代理服务器

我有一个同时使用HTTP(内容数据)和RTMP(videostream)进行通信的应用程序。 nginx服务器被configuration为负载均衡和代理传入的客户端请求。 它适用于HTTP和HTTPS协议。 问题是代理RTMP请求。 由于ngnix不是一个RTMP代理服务器,我感到震惊。 我目前的设置有没有出路? 任何人都可以在这里提出一个可行的select吗?

NginX /清漆和自动caching

假设我们有一个WordPress站点example.com 在我们的网站上,有多种产品。 url看起来像这样: example.com/products/product-1/ example.com/products/product-2/ example.com/products/product-3/ etc… 为了举例,我们假设如下: 每个产品页面需要10秒钟才能生成。 无法提高硬件或软件性能,因此生成产品页面总是最less花费10秒。 产品页面上的信息每小时更换一次。 我们假设每个产品页面内容每小时改变一次,并保持不变,直到下一个小时。 我们不想触发最终用户的caching再生。 换句话说,如果一个小时过去了,caching无效,这个必须通过服务器上的一些进程,NginX,Varnish等进行检查和更新,而不是最终用户。 我们不想让约翰等10秒,他是一个不耐烦的人。 我们不想在应用程序级别执行任何caching,不会执行任何memcahed操作,也不会执行任何wp_cache插件。 它必须通过NginX或Varnish或类似的东西。 我可以caching这些页面,并且每隔一个小时只能由NginX重新加载它们吗? 我需要清漆吗? 我将如何设置,以便所有页面自动重新caching?

/etc/init.d/nginx重新加载不工作

我以前的问题显示,重新加载我的Debian GNU / Linux 6.0 nginx反向代理的configuration不起作用,而重新启动,或直接通过二进制重新加载确实工作。 我已经看了/etc/init.d/nginx文件,看看究竟会出现什么问题,但是由于这是从Nginx的Sergey Budnevitch写的,我不敢捣鼓它。 我可能旧版本的文件的内容: #!/bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $network $remote_fs $local_fs # Required-Stop: $network $remote_fs $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Stop/start nginx ### END INIT INFO # Author: Sergey Budnevitch <[email protected]> PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC=nginx NAME=nginx CONFFILE=/etc/nginx/nginx.conf […]

nginx 未知的“0”variables

我已经尝试了两天将.htaccess转换为nginx重写原始文件如下所示: # Turn on URL rewriting RewriteEngine On RewriteBase // # Protect hidden files from being viewed <Files .*> Order Deny,Allow Deny From All </Files> # Protect application and system files from being viewed RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L] # List of files in subdirectories will not be displayed in the browser Options -Indexes # Allow […]

NGINX:如何将HTTPstream量代理到一台服务器,并向另一台服务器提供stream量?

我是nginx新手,以及它如何处理locatoins,并希望得到我遇到的问题的帮助: 在同一台服务器上,我有一个Apache Web服务器和一个WebSocket服务器。 Apache工作在端口8080上,websocket服务器工作在9090上。我想在前面放一个nginx代理,这样http / https通信代理到apache,ws / wss通信代理到websocket服务器。 我有以下configuration: location /ws* { proxy_pass ws://127.0.0.1:9090; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; } 这工作正常,但我面临的问题是,所有ws *请求也redirect到Apache服务器,而我只希望他们被redirect到WS服务器。 我读过nginx只需要匹配的第一个位置,但这似乎是错误的在我的情况。 所以问题是我如何代理http(s)stream量只能到apache和ws(s)通信到web套接字服务器?

在nginx反向代理背后的WordPress不工作在https

我试图在基于Docker的云上运行wordpress。 设置是: 有一台运行mysql数组的服务器,它使用运行在Nginx上的Wordpress提供容器。 该设置是从这个dockerfile复制的。 此设置的目标是实现高吞吐量并与我们的云安装兼容。 wordpress容器有一个本地ip,与mysql数组和Nginx反向代理位于同一个子网,并有一个运行http(不是https)的公共端口。 反向代理被configuration为为wordpress容器运行SSL。 导航对http和https都起作用,但是当我尝试使用HTTPSlogin仪表板时,出现以下错误: 您没有足够的权限访问此页面。 我在HTTP上的仪表板上login时发现了唯一有意义的错误: [04-Nov-2014 23:16:13 UTC] PHP注意:未定义索引:/usr/share/nginx/www/wp-config.php中的HTTP_X_FORWARDED_PROTO行86 但仪表板在http上正常工作。 在Wordpressconfiguration文件中,我不得不添加下面这行: / * SSL代理* / if($ _SERVER ['HTTP_X_FORWARDED_PROTO'] =='https')$ _SERVER ['HTTPS'] ='on'; 我认为这是罪魁祸首。 我在官方的wordpress文档中发现了这个技巧,如果没有它,HTTPS不会加载CSS,无论是logging还是不logging。 我想也许我应该修改这一行以适应我的configuration? 无论是这个,还是nginx反向代理configuration文件 ,我都不知道。 wordpress + nginx容器中的nginxconfiguration文件是相当标准的,而且是从这里复制的。 请帮助我:D

请求与nginx,独angular兽和rails的超时问题

我在轨道上有一个应用程序,它在生产中运行独angular兽。 有一些请求需要花费很长时间来处理。 我已经configuration服务器来增加超时,所以这些请求正常工作。 问题是,当请求需要超过30秒的响应时,我得到这个消息: 暂停服务 该服务暂时不可用。 请稍后再试。 在unicorn.rb我有timeout 120configuration和我的nginx.conf是: upstream unicorn_my_app { server unix:/tmp/my_app.socket fail_timeout=0; } server { listen 80; client_max_body_size 4G; server_name www.my_app.com; proxy_read_timeout 120; keepalive_timeout 5; root /home/ubuntu/my_app/current/public; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if (!-f $request_filename) { proxy_pass http://unicorn_my_app; break; } } error_page 404 500 502 503 […]