Articles of nginx

Apacheredirect到www-prefixed URL的问题

我有一个网站与域名mysite.com。 我想这样做,如果用户input“mysite.com”将redirect到“www.mysite.com”。 另外,“mysite.com/subdir”也将redirect到“www.mysite.com/subdir”。 我已经查看了vhost的更改并重写了,但是它不适用于“mysite.com/subdir->”www.mysite.com/subdir“的情况。 每次input“mysite.com/subdir”,都会redirect到“www.mysite.com”。 只有“www.mysite.com/subdir”才有效。 不知道如何解决这个问题。 我打开重写日志,但没有看到任何明显的。 这是我的configuration文件到目前为止。 请让我知道我错过了什么。 谢谢! 仅供参考:我在Apache 2.2.3上使用了CentOS 5.4,nginx 1.2.0。 该网站本身是用CodeIgniter框架构build的。 http.conf的: ServerTokens Prod ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 120 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 10 ServerLimit 256 MaxClients 60 MaxRequestsPerChild 10000 #StartServers 8 #MinSpareServers 5 #MaxSpareServers 20 #ServerLimit 256 #MaxClients 256 […]

乘客企业版 – “大众部署”澄清

我们正在考虑为乘客企业购买许可证,我正在寻找关于乘客企业版“大规模部署”function的更好解释。 假设你有Rails 3应用程序 – 我的博客 news_site online_resume 这些全部都被放到服务器上的一个目录中,我们可以指示Passenger查看该目录并提供这些应用程序。 所以我的问题是:nginx怎么来这里玩? 该虚拟服务器的nginxconfiguration是否完全被忽略? 我们经常需要升级nginxconfiguration,例如重写,以及一些乘客configuration(例如min_instances )。

解谜:开启https时显示php代码

当我尝试设置https(让nginx在443上使用ssl设置)并访问我的页面时,出现了令人惊讶的事情,我看到了我的php代码正在显示。 我在nginx config中看到这个fastcgi_pass 127.0.0.1:9000; 这是否意味着nginx将PHP请求直接转到9000端口? 我的https设置是这样的 server { listen 443; ssl on; ssl_certificate /etc/domain_com.crt; ssl_certificate_key /etc/domain.key; ssl_protocols SSLv3 TLSv1; ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM; server_name domain.com; } 顺便说一句,我的原始结构是haproxy到Nginx。 希望有人在这方面有经验可以点亮我一点。 谢谢!

一般情况下,拒绝Nginx请求而不进行身份validation

是否有可能拒绝所有的nginx请求,不发送基本authentication数据? 我有这样的要求: xxx.xxx.xxx.xxx – – [24/Oct/2012:10:32:12 +0200] "POST /path HTTP/1.1" 401 1387 "-" "Apache-HttpClient/4.1.1 (java 1.5)" "-" xxx.xxx.xxx.xxx – paul [24/Oct/2012:10:32:12 +0200] "POST /path HTTP/1.1" 200 192 "-" "Apache-HttpClient/4.1.1 (java 1.5)" "-" 我想拒绝第一个,不提供用户。 正如你所看到的,它已经发送了401 HTTP代码,但是这个代码不是直接从nginx生成的,而是从底层的应用服务器生成的。 我想要做的是直接在nginx中否认它。 有没有办法检查用户是否被提供? 这是可能的,而不需要直接在nginx中设置正常的基本authentication?

NGinx重写规则和发布参数

我有一个网站,使用CodeIgniter,并在NGinx下运行。 我使用这些重写规则来清理URL,并从URL中删除index.php。 不幸的是,由于控制器没有收到任何参数,所以对于向控制器发送POST参数的AJAX查询有问题。 使用Firebug Lite,我可以看到我给控制器提供了正确的POST参数,但是当我在控制器中打印它们时,什么也不打印。 我想这是从重写规则,这似乎没有通过沿URL的参数,但我不知道如何解决这个问题。 会有人有一个想法? 这里是重写规则,可能更容易让他们在这里,而不是在其他网站: if ($host ~* ^www\.(.*)) { set $host_without_www $1; rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent; } # canonicalize codeigniter url end points # if your default controller is something other than "welcome" you should change the following if ($request_uri ~* ^(/welcome(/index)?|/index(.php)?)/?$) { rewrite ^(.*)$ / permanent; } # removes trailing […]

configurationmunin-node为nginx

我正在部署munin来监视我生产的ubuntu aws ec2在nginx上运行的实例。 现在我想在生产系统中部署munin-node,并在另一个aws ec2 ubuntu实例中部署munin-master。 博客的大部分内容都提到了使用apache2 web服务器configurationmunin,而不是使用nginx

Nginx:从根目录的子目录中提供一个应用程序

我正在尝试将为Apache编写的应用程序(或.htaccess-files)迁移到Nginx,而且我遇到了一个问题,我无法将其包裹起来。 我来自Apach环境,所以这对我来说是相当新的。 我有以下文件夹结构: /var/www/mydomain.tld/ └── web ├── error ├── favicon.ico ├── my_application ├── index.html └── robots.txt web是mydomain.tld的www-root文件夹,我的应用程序位于/web/my_aplication/ 。 我想在www.my_domain.tld被调用时在/ my_application中为应用程序提供服务。 标准指令是由ISPConfig自动创build的,但我想我需要添加几行,但我不知道我做错了什么。 这里是相关的部分(我猜): server { listen 1.2.3.4:80; server_name my_domain.tld; root /var/www/mydomain.tld/web; ## force www – added this myself if ($http_host !~ "^www\.") { rewrite ^(.*)$ http://www.$http_host$request_uri redirect; } ## rewrite to /my_application/ and last if ($http_host […]

设置Nginx的网站,对Ajax的反应不同?

我正在尝试为nginx设置一个自动的站点向下页面。 到目前为止,我有这样的: location / { try_files /sitedown.html @myapp; } location @myapp { … } 这足够好用了:如果sitedown.html存在,那么它就会起作用,否则它会为应用程序提供服务。 但是,我想要做的是对Ajax请求做出不同的响应,以免错误输出javascript。 我相信,使用重写模块,我可以做一些事情,如if ($http_x_requested_with = XMLHttpRequest) {但是我不清楚如何使用它来做我想做的事情。 我想要那个头来的请求返回一个简单的JSON响应,如"sitedown"与适当的JSON编docker。 除此之外,最好能返回一个javascript可以响应的503响应代码。

ngnix和避免雷鸣的场景

我有一个安装程序,nginx将在nedia direcotry上尝试一些文件,并提供静态图像文件。 如果找不到,会调用后端,从s3中提取文件,创build一些数据库条目,然后将文件复制到媒体目录,以便进一步调用该媒体文件将由nginx提供。 生成文件可能需要5秒钟。 当这个文件有X个新请求时,这个文件还没有生成,后端将被调用X次而不是一次。 我怎样才能避免这个问题,并保持所有请求,直到文件准备好?

使用PHP / nginx启用openssl

尝试使用nginx + PHP 5通过PHP连接到SMTP + SSL时出现以下错误, Could not connect to smtp host 'ssl://smtp.gmail.com' (5) (Unable to find the socket transport "ssl" – did you forget to enable it when you configured PHP?) 在phpinfo中我看到: OpenSSL support disabled (install ext/openssl) 这导致我相信我已经错误地安装了OpenSSL。 我读过一堆地方,我应该取消注释以下行: extension = php_openssl.dll 这行不存在,所以我把它添加到我的php.ini结束无济于事。 php_openssl.dll文件不存在于我的服务器上的任何地方。