Articles of nginx

如何在nginx中指定Windows文件path

我使用的是官方的windows版本的nginx。 我想指定相当于这个configuration的窗口 location /static/ { alias /home/user/staticfiles/; } 如何在别名指令中指定windows文件path? 这甚至有可能吗?

如何减轻POODLE,但保持旧客户端的SSLv3支持

如何缓解POODLE攻击,但是仍旧保持对Windows XP或电子邮件客户端等旧客户端(如IE6)的支持。 我注意到,谷歌这样做: https : //www.ssllabs.com/ssltest/analyze.html?d=mail.google.com 我正在使用nginx和openssl。 另外我想保持与现代/大多数浏览器的保密性。 我想在ssllabs上保留我的A级。

nginx速率限制与X-Forwarded-For头

我正在研究使用nginx的HttpLimitReqModule进行速率限制。 但是,所有请求都来自同一个IP(一个负载均衡器),并在头部有真实的IP地址。 有没有办法让Nginx的速度限制基于在X-Forwarded-For头的IP而不是源的IP?

Nginx的configuration:前端反向代理到另一个端口

我有一个小的Web服务器,端口5010,而不是80服务请求。 我想使用nginx作为前端代理来接收端口80上的请求,然后让这些请求被端口5010处理。 我成功安装了nginx,并且在Ubuntu Karmic上运行的很顺利。 但是,我尝试重新configuration默认的nginx.conf没有成功。 我尝试在服务器指令中包括端口5010的listen参数。 我也尝试了proxy_pass指令。 任何需要修改的build议或需要设置的指令才能进行端口转发。

nginx日志logging到access.log.1而不是access.log,logrotate失败?

我有一个nginx实例,它被设置为logging访问/var/log/nginx/access.log和错误到/var/log/nginx/errors.log,但是一旦logrotate每周运行一次,文件就会移动到* .log.1和新的* .log文件被创build,但nginx继续login到log.1文件而不是新的.log文件(没有任何东西被压缩)。 我第一次注意到这一点,自从轮伐日志变成3周后,日志变得越来越大了。 运行kill -HUP `cat /run/nginx.pid`让nginx重新开始logging到正确的地方,但是这个问题在下个星期又开始了。 这是令人沮丧的更重要的原因是我有日志设置为通过rsyslog上传到Loggly,当nginx停止logging到文件我有rsyslog轮询,然后停止上传,我没有得到任何警报。 我怀疑这与重新启动nginx或重新加载configuration有关,因为它没有启动,直到我做了一个configuration更改,并以我认为是正常的方式重新加载configuration。 我试着运行kill -USR1 `cat /run/nginx.pid`但是文件继续logging到错误的位置,直到我运行kill -HUP `cat /run/nginx.pid` ,而我已经知道这并不能解决问题。 任何想法是怎么回事? 我承认我不是logrotate或者nginxpipe理方面的专家,但是我的Google在这个方面失败了。 这里是我的nginx logrotate脚本,让我知道如果还有什么你可能想看到的。 除了定义输出位置之外,nginx.conf在日志方面没有什么特别之处。 /var/log/nginx/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate [ -s /run/nginx.pid […]

nginx反向代理 – 尝试上游A,然后B,然后A再次

我试图设置nginx作为一个反向代理,与大量的后端服务器。 我想按需启动后端(在第一个请求中),所以我有一个控制进程(由HTTP请求控制),根据接收到的请求启动后端。 我的问题是configurationnginx来做到这一点。 以下是我到目前为止: server { listen 80; server_name $DOMAINS; location / { # redirect to named location #error_page 418 = @backend; #return 418; # doesn't work – error_page doesn't work after redirect try_files /nonexisting-file @backend; } location @backend { proxy_pass http://$BACKEND-IP; error_page 502 @handle_502; # Backend server down? Try to start it } location […]

通过docker卷共享unix套接字 – 权限被拒绝

我尝试通过一个卷与我的nginxnetworking服务器共享我的php5-fpm套接字。 Fpm和nginx运行在不同的容器中,我想通过共享卷来从fpm放置套接字文件来使它们工作。 2014/04/13 10:53:35 [crit] 33#0: *1 connect() to unix:/container/fpm/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.8.2, server: docker.dev, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/container/fpm/run/php5-fpm.sock:", host: "docker.dev" 我已经尝试将权限设置为777,并将php5-fpm.socket组更改为www-data 。 fpm容器的Dockerfile FROM ubuntu:13.10 RUN apt-get update RUN apt-get upgrade -y RUN apt-get install -y php5-cli php5-common RUN apt-get install -y php5-fpm php5-cgi ADD […]

nginx没有server_name和只使用静态IP地址?

这是我的第一个Web应用程序部署,并遇到各种问题。 我目前正在为Django应用程序的nginx + gunicorn实现,但大多数这个问题涉及到nginxconfiguration。 在某些情况下,nginx会收到连接并代理到gunicorn本地服务器。 在Nginx的configuration,它说server_name我必须提供一个? 我不打算使用任何types的域名,只是通过我的networking的外部IP(这是静态的)和端口号来听。 我的愿望是,当我访问像http://xxx.xxx.xxx.xxx:9050东西,我将能够得到的网站。 以下是我将基于configuration参考的示例代码。 server { listen 80; server_name WHAT TO PUT HERE?; root /path/to/test/hello; location /media/ { # if asset versioning is used if ($query_string) { expires max; } } location /admin/media/ { # this changes depending on your python version root /path/to/test/lib/python2.6/site-packages/django/contrib; } location / { proxy_pass_header Server; […]

nginx自动故障转移负载均衡

我使用nginx和NginxHttpUpstreamModule进行负载平衡。 我的configuration非常简单: upstream lb { server 127.0.0.1:8081; server 127.0.0.1:8082; } server { listen 89; server_name localhost; location / { proxy_pass http://lb; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 但是使用这个configuration,当2个后端服务器中的一个closures时,nginx仍然将请求路由到它,并且导致超时一半的时间:( 有没有任何解决scheme,使nginx自动路由请求到另一台服务器,当它检测到一个closures的服务器。 谢谢。

哪个最适合Django? Lighttpd还是Nginx? 或者也许别的东西?

Lighttpd和Nginx是基于你的经验,更适合Django的? 我已经使用了两者,几乎没有发现任何区别,他们只是工作正常…有什么用例,当他们中的一个比另一个好得多? 在回答时请兼顾configuration的简单性和效率。 我通常的设置是通过daemontools或init.d脚本启动一个单独的Django FCGI进程(如在./manage.py runfcgi daemonize=false port=8098 host=127.0.0.1中./manage.py runfcgi daemonize=false port=8098 host=127.0.0.1 ),lighty / nginx充当反向代理。 哦,如果你觉得其他一些http服务器对于Django来说比Lighty和Nginx要好的多,请不要犹豫分享你的想法。