Articles of nginx

nginx – 为什么我不能在proxy_passpath中使用variables?

为什么我不能在proxy_pass中使用variables$ user – 就像下面的例子一样? server { listen 80; server_name ~^(?P<user>[az|AZ|0-9|_|-]+)\.example\.net$; root /home/$user/webapps/; location /app/ { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://unix:/home/$user/webapps/app/run/gunicorn.sock:/; } } 这是可能实现还是应该放弃? 而这一个将是完美的,但它也不工作。 server { listen 80; server_name ~^(?P<user>[az|AZ|0-9|_|-]+)\.example\.net$; root /home/$user/webapps/; location ~ ^\/(?P<app>[\w-_]+)(\/.*)?$ { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://unix:/home/$user/webapps/$app/run/gunicorn.sock:/; } } 我读了这个和那里 ,但在这里,但没有一个通过Unix套接字覆盖proxy_pass。

在nginx上configurationssl – 这个密码列表是最新的吗?

我已经从Comodo购买了一个证书,我在他们的网站上关于如何在我的nginx上configuration证书的文章 。 问题是,这个configuration,主要是密码列表,是最新的吗? #enables all versions of TLS, but not SSLv2 or 3 which are weak and now deprecated. ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #Disables all weak ciphers ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256: ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256: ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256: DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA: ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384: AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA: AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL: !EXPORT:!DES:!MD5:!PSK:!RC4"; 文章date是2011年7月27日16:28,已经快四年了。

当请求的站点没有在端口80上侦听时,nginx进入错误的站点

我在一台服务器上使用了生产(www.myexample.com)和开发(dev.myexample.com),使用服务器模块和单独的目录,同时在端口80上侦听。这工作得很好。 现在我已经在站点configuration文件中安装了SSL证书并启用了SSL模式。 同时我把监听端口从80改为443,所以站点不应该在端口80上响应,只能在端口443上。开发站点仍在运行。 现在看来代替了一个错误,当我连接到http://www.myexample.com时,我得到了开发网站。 要解决这个问题,我添加了一个真正的“默认”服务器块(server_name设置为_)并指向一个不包含文件的目录。 有没有更好的办法? 如果我想要一个真正的默认网站,我不希望它显示一个已知的主机名。 我猜我必须创build一个服务器块,听取fr www.myexaple.com:80并configuration它以某种方式拒绝所有的页面请求,但如何? 我怎样才能完全停止对我没有托pipe的网站的任何请求做出回应?

甘地SSL证书,X509私钥值不匹配

我最近使用以下命令重新生成了我从Gandi购买的SSL证书: openssl req -nodes -newkey rsa:2048 -sha256 -keyout server.key -out server.csr 这将生成2个文件, server.csr和server.key然后我将上传签名请求给Gandi,Gandi交换了我的服务器证书以及中间证书。 然后我连接这些。 cat my-cert-from-gandi.crt intermediate.crt > chained-certificate.crt 然后在我的nginxconfiguration中: ssl on; ssl_certificate /etc/nginx/certificates/chained-certificate.crt; ssl_certificate_key /etc/nginx/certificates/server.key; 然后当我尝试testing这个configuration( nginx -t )时,我收到以下输出: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/certificates/server.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch) server.key的模数与server.csr的模数相匹配。 然而, my-cert-from-gandi.crt的模数与我私钥的模数不匹配。 一个潜在的暗示是,自从上次我做到这一点以来,中间证书似乎已经在甘地的目标上发生了变化。 以前它包含一个单独的BEGIN/END块,现在它包含两个。 不知道这是否意味着我必须做一些不同的事情。 任何帮助深表感谢。

Nginx在Ubuntu 12.04上拒绝OPTIONS请求

我正在尝试在离线应用程序中使用铬进行跨域Ajax调用。 我想在我的API做一个POST和Nginx不断拒绝我的OPTIONS 。 XMLHttpRequest cannot load http://wss.dev:8080/api/checkin. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 405. 我尝试了不同的configuration,但似乎没有任何工作。 我的conf是一个跟随: server { listen *:8080; server_name wss.dev www.wss.dev; client_max_body_size 200m; index index.html index.htm index.php; access_log /var/log/nginx/wss.dev.access.log; error_log /var/log/nginx/wss.dev.error.log; add_header 'Access-Control-Allow-Origin' $http_origin; add_header 'Access-Control-Allow-Credentials' 'true'; […]

Nginx白名单文件扩展名

server { listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 server_name public; root /var/www/public; location = /gameserver/ { root /var/www/public/gameserver; index index.html; if ($request_filename !~* [pk3]$) { rewrite ^ /404.html; } } } 我是Nginx新手,我已经尝试了几个小时(谷歌和阅读手册),但我不知道如何拒绝所有的文件扩展名,除了.pk3与Nginx。 / var / www / gameserver /指向一个共享链接,我只想要.pk3的可下载文件。 这将是一个小游戏服务器与朋友一些有趣的,没有涉及金钱。 谢谢你的时间, […]

在Nginx上启用SPDY后,意外的文件下载缓慢

一个简单的WordPress静态网站完全在https上运行。 Nginx conf在这里: http : //pastebin.com/BrP0LThT 只有之前/之后的区别是: listen 443 ssl; listen 443 ssl spdy; 带有SSL的Nginx 1.8.0,没有SPDY: 来自transitions.js文件的响应: HTTP/1.1 200 OK Server: nginx/1.8.0 Date: Sun, 28 Jun 2015 18:13:30 GMT Content-Type: application/javascript Last-Modified: Wed, 03 Dec 2014 14:19:08 GMT Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding ETag: W/"547f1bdc-5267" Expires: Sun, 12 Jul 2015 18:13:30 GMT Cache-Control: max-age=1209600 […]

systemctl无法parsingkill模式,忽略混合

在CentOS 7上,我想检查nginx服务的状态: # systemctl status nginx -l nginx.service – The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled) Active: inactive (dead) Jun 30 03:40:08 dev01 systemd[1]: [/usr/lib/systemd/system/nginx.service:13] Failed to parse kill mode, ignoring mixed 那么我启用它: # systemctl enable nginx并再次检查它: # systemctl status nginx -l nginx.service – The nginx HTTP and reverse proxy server […]

澄清netcat的结果

我一直在试图debugging我们的服务器上的一个问题,我感到困惑,从netcat这个响应。 任何人都可以解释为什么林检查时看到一个端口是否正在工作,得到这两个矛盾的消息? 它是通过TCP连接失败,然后成功的一些其他方法(*)? ubuntu@1-2-3-4:/var/log$ nc -vz localhost 7777 nc: connect to localhost port 7777 (tcp) failed: Connection refused Connection to localhost 7777 port [tcp/*] succeeded! IP4 / 6结果 nc -vz4 localhost 7777 Connection to localhost 7777 port [tcp/*] succeeded! nc -vz6 localhost 7777 nc: connect to localhost port 7777 (tcp) failed: Connection refused

nginx上游和fail_timeout

fail_timeout官方nginx文档定义如下: * the time during which the specified number of unsuccessful attempts to communicate with the server should happen to consider the server unavailable; * and the period of time the server will be considered unavailable. 我的问题是,请求被标记为不成功的单个请求的超时是多less,以及如何定义这个超时值? 如果max_fails=3和fail_timeout=120 ,这是否意味着如果在120​​/3秒后超时,请求失败?