Articles of nginx

Nginx的configuration文件结构

我在哪里可以把特定的域configuration文件放在nginx服务器上? 我见过很多矛盾的信息。 它是否属于启用网站的文件夹? 如果是这样,我把它放在已经创build(通过符号链接)www.mysite.com文件? 或者我创build一个www.mysite.com.conf文件? 或者我把www.mysite.com.conf放在conf.d目录下? 我只是试图添加一些媒体特定的caching规则特定于一个网站托pipe在我的nginx服务器(所以不在nginx.conf文件中)。 我只是想使这个configuration文件特定于一个网站。 我不知道在哪里放置configuration文件,并将其conf.d下的www.mywebsite.com.conf或在相同的名称下启用的网站没有工作。 谢谢。

反向代理PHP:最佳实践?

我将NGINX设置为一个SSL反向代理,用于三个带有dynamic(PHP)和静态内容的小型Web应用程序。 当涉及到传递PHP请求时,什么会被认为是安全性和性能方面的最佳实践? 是否应该将它们传递到所请求的Web服务器(NGINX – 然后通过同一主机上的套接字或TCP传递给PHP-FPM)还是直接传递给PHP-FPM服务器? 我所有的Web应用程序和反向代理都在FreeBSD上分开的Jails中。 每个监狱都有自己的NGINXnetworking服务器和PHP-FPM(或uWSGI和Python)。

nginx重写所有的HTTPS除了子path?

我希望所有的URL都被redirect到https。 http://example.com/blah/blah 改变 https://example.com/blah/blah 我有这个片段在我的nginx conf中实现了这个效果: upstream examplewsgicluster { server unix://tmp/example.sock; } server { listen 80; server_name beta.example.com www.example.com example.com; rewrite ^ https://example.com$request_uri? permanent; } server { listen 443; location / { include uwsgi_params; uwsgi_pass examplewsgicluster; uwsgi_read_timeout 700; } } 我如何编辑这个规则,以/ admin /开头的path不被redirect? 所以http://example.com/admin/blah/blah不会被redirect。

Nginx的如何运行shell脚本通过lua模块的页面加载执行,然后服务目录列表?

所以我有一个bash脚本,我想执行/运行在url的每个“页面加载”,以便它将修改(创build符号链接)到我想要服务器然后服务的/public/html/文件夹。 问题是我想出了如何做一个或其他不是两个。 我可以用nginx root /public/html/等来显示目录,或者我可以通过使用而不是root /public/html/来运行脚本: content_by_lua("/myscript.sh")'; 但是,如果我使用lua的内容,脚本会运行并创build我在/public/html里面所需要的内容,但Nginx会显示一个空白屏幕。 我想要一个方法来让nginx在使用content_by_lua运行myscript.sh后实际显示/public/html的目录列表。 我刚刚开始使用nginx是因为这个任务,并且很难做到这一点,我search了一下,但不是一个简单的问题,短语的谷歌或这里。

Nginxredirect导致问题

我有一个问题,我希望很简单。 我有一个wordpress插件,当用户select分享时,它会产生一个图片的链接。 我发现链接是正确的,应该工作 它看起来像这样: http://www.example.com/nextgen-share/6064/872/thumb?uri=/the-galleries/headshot-gallery/ 当这个链接命中服务器回来时,它改变 http://www.example.com/?q=/nextgen-share/6064/872/thumb?#gallery/6064/872 在该链接的Wordpress扼stream圈,并指引访客到没有图像的画廊页面。 我把它缩小到了我的nginx conf中的一行。 location / { try_files $uri $uri/ /index.php?q=$request_uri; } 这是需要使永久链接工作我猜。 我的问题是如何使生成的url正常工作?

Nginx fastcgi_cache从caching提供服务时隐藏Set-Cookie

我试图使用nginx fastcgi_cache来从我的网站服务一些页面,它工作正常,但我发现会话被复制到所有的用户,因为Set-Cookie被caching在响应中。 我已经尝试了几种解决scheme,但我不想在这些页面中禁用Cookie,只从caching中提供服务时忽略它们。 有没有办法做到这一点? 我考虑搬到清漆,但我有几个网站在同一台服务器,我想避免它。 我也试过这个 ,但没有成功 fastcgi_cache_path /etc/nginx/cache/iteramos levels=1:2 keys_zone=ITERAMOS:120m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; set $supercache_uri $request_uri; set $no_cache 1; #set no cache to 0 (do cache) if we are in listing pages if ($supercache_uri ~ ^/(preguntas|etiquetada|etiquetas)$) { set $no_cache 0; set $supercache_uri ''; } if ($supercache_uri = /) { set $no_cache 0; set $supercache_uri […]

在CentOS 7下Nginx下没有WordPress的写入权限

我有一台运行Nginx的CentOS 7机器,用户是“nginx”(在CentOS中是默认的)。 我已经安装了Wordpress,这是完美的工作,我已经给wordpress文件夹和子文件夹(775)中的nginx用户的wrtite权限,但仍然会得到权限错误: 无法创build目录wp-content / uploads / 2015/05 我再次检查哪个用户正在运行nginx工作进程,它是nginx。 这一定是我错过的小事。 有人能帮我吗? 编辑: 我在/var/log/nginx/error.log中注意到了这一点: 2015/05/03 20:42:41 [error] 23652#0:* 1在stderr中发送了FastCGI:“无法打开主脚本:/usr/share/nginx/html/index.php(没有这样的文件或目录)当读取来自上游的响应报头时,客户端:XXX.XXX.XXX.A,服务器:XXX.XXX.XXX.B,请求:“GET / HTTP / 1.1”,上游:“fastcgi:// unix:/ var /运行/ php-fpm / php-fpm.sock:“,主机:”XXX.XXX.XXX.B“ 2015/05/03 20:44:18 [error] 23652#0:* 3在stderr中发送了FastCGI:“无法打开主脚本:/usr/share/nginx/html/wp-admin/admin-ajax.php没有这样的文件或目录)“,而从上游读取响应头,客户端:XXX.XXX.XXX.A,服务器:XXX.XXX.XXX.B,请求:”POST /wp-admin/admin-ajax.php HTTP / 1.1“,上游:”fastcgi:// unix:/var/run/php-fpm/php-fpm.sock:“,主机:”XXX.XXX.XXX.B“,referrer:” http:// XXX。 XXX.XXX.B / wp-admin / “ 2015/05/03 21:02:54 [emerg] 23803#0:getpwnam(“http”)在/etc/nginx/nginx.conf中失败:6 编辑2 $ ps -elf|grep nginx 1 […]

Nginx进程被Upstart迷路了

通常我可以通过键入sudo service nginx reload来重新加载我的nginxconfiguration,并且一切都是可爱的。 然而,今天我试了一下,得到了reload: Not running我试着重新启动nginx,起初我收到一条消息,说没有当前的实例正在运行(这与ps -ef有冲突,它有一个PID匹配/var/run/nginx.pid ),然后似乎开始了一个新的实例,但似乎没有做任何事情。 此外,重新加载命令的控制没有返回给我。 任何人都有这种情况的经验? 这是一个生产机器,所以我不知道发生了什么事情,不知道该如何在testing实例上重现这一点。 谢谢!

Python2作为https客户端与nginx服务器和SSL证书链接错误

我无法让Nginx 1.8与我的证书一起工作,以便我可以使用基于python2的https客户端。 (requests.py,URLLib) 我已经尝试使用Comodo和GlobalTrust通配符证书,并在设置nginx时将它们链接到服务器上,但从python获取此错误。 requests.exceptions.SSLError: [Errno 1] _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 在Nginx上我使用这些指令来设置SSL: ssl_session_cache shared:SSL:20m; ssl_session_timeout 10m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:HIGH:!MD5:!aNULL:!EDH:!CAMELLIA; ssl_protocols TLSv1.2 TLSv1.1 SSLv3; #ssl_protocols TLSv1.2 TLSv1.1 TLSv1; ssl_prefer_server_ciphers on; ssl_certificate /etc/nginx/alphassl/cert_bundle.crt; ssl_certificate_key /etc/nginx/newkey/key.key; 和我一起在服务器上链接证书 cat server.crt intermediate.crt root.crt > cert_bundle.crt 和Comodo: cat server.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl_bundled.crt 它适用于curl,chrome和python3,但我需要能够从Python 2.7.6使用类似的请求来访问它 import requests requests.get('https://server.com/', verify=True) 我也可以向https://store.ssl2buy.com/发送一个请求,从python2这是我的证书的供应商,所以我相信这是一个服务器,而不是python客户端的问题。 […]

限制configuration错误的僵尸程序

我们有一个负载均衡器后面的Nginx / PHP-FPM,它会定期获取。 许多刮板在我们的应用程序的404页面上安静地打了一下。 Nginx有没有一种方法可以在速率限制模块或不同模块的基础上阻止所有基于x-forward-for的stream量,在每分钟超过100个请求时发生404错误? 我发现的limit-req-module文档看起来像是基于资源而不是页面返回状态。 有足够的stream量,每个节点都看到足够的stream量,他们不应该需要沟通谁集体阻止。