Articles of nginx

在nginx中使用通配符证书的多个SSL虚拟主机

我有两个主机名共享相同的域名,我想通过HTTPs服务。 我有一个通配符SSL证书,并创build了两个vhostconfiguration: 主持人A. listen 127.0.0.1:443 ssl; server_name a.example.com; root /data/httpd/a.example.com; ssl_certificate /etc/ssl/wildcard.cer; ssl_certificate_key /etc/ssl/wildcard.key; 主持人B listen 127.0.0.1:443 ssl; server_name b.example.com; root /data/httpd/b.example.com; ssl_certificate /etc/ssl/wildcard.cer; ssl_certificate_key /etc/ssl/wildcard.key; 不过,我得到的是同一个虚拟主机服务的主机名。

Nginx的“默认”服务器?

我有一个Nginx与一些启用服务器块。 每个服务器都回答1个规范域,并可能向该规范URL转发1个或更多。 我有至less一个服务器(还没有检查所有),如果我input一个不存在的域指向这个盒子,Nginx显示一个它select的网站(总是同一个网站,但不是一个我后)。 我已经为我经常登陆的站点的configuration文件捅了一圈,但没有看到任何明显的东西,将其标识为任何types的默认站点,但它仍然存在,当我手指指向一个URL时总是显示出来。 有什么想法,我应该寻找什么追踪这个?

倾向于通过IPv6的IPv4传入连接

我们运行社交/本地服务,从地理定位用户的IP获益。 问题在于,对于IPv6来说,地理位置比IPv4要快得多。 有没有一种方法来优先使用nginx在Ubuntu主机上通过IPv6传入连接? configuration看起来像这样: server { listen 80 default_server; listen [::]:80 ipv6only=off default_server; }

Nginx的多个位置问题

我目前正在试图将3个应用程序从一个存储库拆分为3个,但保留了url结构,因此在同一个域中基本上不同的位置必须由不同的应用程序交付。 我正在努力的是,其中一个应用程序需要是不存在的url的后备,所以如果第一个不匹配,第二个不匹配,那么第三个应该处理请求 我得到的结构是: / etc / nginx / sites-enabled / main_site,在这里,除了server_name和logs之外,我还有include /etc/nginx/subsites-enabled/* ,其中我有3个configuration文件,每个应用都有一个。 每个configuration文件都包含一个位置块。 我试过在正则expression式(基本上试图硬编码其他应用程序处理的URL)负面的前瞻,但失败了。 所以,总结一下: /和/社区应该由/etc/nginx/subsites-enabled/example.org/home(几个Perl脚本) /新闻应通过/etc/nginx/subsites-enabled/example.org/news(wordpress) 其他一切都应该由/etc/nginx/subsites-enabled/example.org/app(蛋糕应用) perl位工作正常。 我遇到的问题是,应用程序正在接pipe新闻(可能是因为它匹配。*),我已经尝试了各种选项(我已经在这个为期2天),但没有一个解决了所有的问题(有时静态资产将无法工作等)。 我的configuration是: /etc/nginx/sites-enabled/example.org: server { listen 80; server_name example.org; error_log /var/log/nginx/example.org.log; include /etc/nginx/subsites-enabled/example.org/*; } /etc/nginx/subsites-enabled/example.org/home: location = / { rewrite ^.*$ /index.pl last; } location ~* /community(.*) { rewrite ^.*$ /index.pl last; } location ~ […]

使用Nginx,Apache和mod_wsgi部署Django App

我有一个Django的应用程序,可以使用标准的开发环境在本地运行。 现在我想把它移到EC2进行生产。 django文档build议使用apache和mod_wsgi运行,并使用nginx加载静态文件。 我在Ec2机器上运行Ubuntu 12.04。 我的Django应用程序“ddt”包含一个ddt.wsgi的子目录“apache” import os, sys apache_configuration= os.path.dirname(__file__) project = os.path.dirname(apache_configuration) workspace = os.path.dirname(project) sys.path.append(workspace) sys.path.append('/usr/lib/python2.7/site-packages/django/') sys.path.append('/home/jeffrey/www/ddt/') os.environ['DJANGO_SETTINGS_MODULE'] = 'ddt.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() 我从apt安装了mod_wsgi。 我的apache / httpd.conf包含 NameVirtualHost *:8080 WSGIScriptAlias / /home/jeffrey/www/ddt/apache/ddt.wsgi WSGIPythonPath /home/jeffrey/www/ddt <Directory /home/jeffrey/www/ddt/apache/> <Files ddt.wsgi> Order deny,allow Allow from all </Files> </Directory> 在apache2 / sites-enabled下 <VirtualHost *:8080> […]

nginx代理重试,而后端正在重新启动

Nginx返回502,而后端正在重新启动。 如何让Nginx代理重试N次,延迟M秒? 有没有插件或其他东西?

如何检测在PHP中,如果它运行在Apache,Nginx或其他networking服务器?

首先我知道这个variables: _SERVER["SERVER_SOFTWARE"] 在我的一个应用程序中,我想从PHP脚本检查它运行的是哪个web服务器。 基本上这将是一个wordpress插件,这将有助于博主调整一些configuration。 我为Apache&Nginx创build了独立的进程,并且正在考虑将代码发布为2个不同的WordPress插件。 然后,我只是好奇,知道在PHP中是否有一个FULLPROOF方法来完美地检测Web服务器。 请考虑所有情况:: Apache,Nginx,Apache + Nginx,PHP作为Apache模块,PHP使用fastcgi,php-fpm,lighttpd,IIS等。 此外,它对我的​​应用程序来检测组合和代理的存在至关重要。 谢谢, -Rahul

NGINX将HEAD转换为GET请求

由于一些糟糕的devise决定,我们有一个应用程序无法响应HTTP HEAD请求(返回'方法不允许')。 修改软件正确返回HEAD请求将是棘手的,不是不可能的,但额外的工作。 该应用程序位于NGINX代理的后面,我想知道是否有办法让NGINX将从客户端收到的HEAD请求转换成GET请求到后端,然后放弃除了标题之外的响应并将其发回给客户端就像我们的应用程序服务器能够响应HEAD请求一样。 当前configuration(相当标准) upstream ourupstream{ server unix:/var/apps/sockets/ourapp.socket.thread1 server unix:/var/apps/sockets/ourapp.socket.thread2 server unix:/var/apps/sockets/ourapp.socket.thread3 [like 20 of these] } server { listen 1.2.3.4:80; server_name ourapp; access_log /var/apps/logs/ourapp.nginx.plog proxy; error_log /var/apps/logs/ourapp.nginx.elog info; gzip on; gzip_types text/plain text/html; proxy_intercept_errors on; proxy_connect_timeout 10; proxy_send_timeout 10; proxy_read_timeout 10; proxy_next_upstream error timeout; client_max_body_size 2m; error_page 404 /static/404.html; error_page 500 501 502 […]

在nginxconfiguration文件中分割长行

为了不传递垃圾到后端,我有一个严格的location指令正则expression式。 它看起来像这样: location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/…(more|restrict).ext { # other directives } 我想折80字符的行,有没有办法拆分configuration? 以下结果在语法错误,但是我正在寻找的东西: location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/"\ "…(more|restrict).ext" { # results in a literal newline (%0A) being accepted location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/ …(more|restrict).ext" { 我无法在文档中find提示( http://wiki.nginx.org/ConfigNotation和http://wiki.nginx.org/HttpCoreModule#location提及折叠线)

我应该为dhparam.pem设置哪些权限?

我正在为nginx的SSLconfiguration中的ssl_dhparam指令生成Diffie-Hellman参数。 使用命令openssl dhparam 2048 -check -out dhparam.pem创build文件openssl dhparam 2048 -check -out dhparam.pem 。 我应该为这个文件设置哪些权限? 共享一个git仓库是安全的,还是应该保持私密?