Articles of nginx

某些用户收到不可信的SSL证书警告

当我们通过https访问我们的网站时,我收到了访问我们网站的用户的“证书不可信”错误报告。 我似乎没有任何问题,但是我的团队中有两个不同的人在我们办公室以外的其他无线networking上随机得到这个错误。 他们在办公室没有同样的问题。 我读了中级证书,但这似乎只是一个浏览器的事情,而不是一个networking相关的问题。 我有一个来自GoDaddy的SSL证书,它是在nginx +独angular兽上运行的Rails应用程序。 有没有人有任何其他的想法,为什么这可能发生? 我很难过 运行openssl s_client -connect $hostname:443时,我得到了下面的(redacted)。 CONNECTED(00000003) depth=2 C = US, O = "The Go Daddy Group, Inc.", OU = Go Daddy Class 2 Certification Authority verify error:num=19:self signed certificate in certificate chain verify return:0

为什么Nginx不会为以问号开头的URL返回404错误?

我试图得到一个重写规则工作,我发现,如果URL以问号开头,Nginx无法按预期返回404错误。 相反,根指令中定义的index.html适用于以“?”开头的所有URL。 (例如, example.com/?page-does-not-exist page-does-not- example.com/?page-does-not-exist适用于主页,但不应该) 这使得从example.com/?format=feed&type=rss – > example.com/rss.xml无法获得redirect。 这是从Joomla迁移到Jekyll的博客。 简而言之,访问example.com/123会返回404 ,而访问example.com/?123则不会 。 后者通过URL example.com?/ 123返回该网站的主页。 (没有文件或文件夹'123',所以它的请求应该总是失败。) 除了预期的404redirect不会出现在以问号开头的url之外,网站的所有function都能正常工作,包括HTTPSredirect。 我该如何解决? 这是我的configuration: server { server_name example.com; root /var/www/example.com; index index.html; listen 443; ssl on; … rewrite "/?format=feed&type=rss" https://example.com/rss.xml permanent; location ~* \.(?:ico|css|js|gif|jpeg|jpg|png|txt|svg|eot|woff|ttf)$ { expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; add_header Access-Control-Allow-Origin *; […]

在单个域中托pipe多个Nodejs应用程序

我试图运行多个nodejs应用程序(使用快速框架)所有服务在同一个外部端口(80),但每个子目录下。 比如我想… NodeJsApplication1在http://www.mydomain.com/NodeJsApplication1上可用 NodeJsApplication2在http://www.mydomain.com/NodeJsApplication2上可用 等等 我曾尝试使用Nginx作为代理类似于以下的configuration文件。 server { listen 80; server_name www.mydomain.com; location / { root /var/www/html; index index.html index.htm; } location /NodeJsApplication1/ { proxy_pass http://0.0.0.0:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; rewrite /NodeJsApplication1/(.*) /$1 break; } location /NodeJsApplication2/ { proxy_pass http://0.0.0.0:3001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; rewrite […]

在Nginx中使用redirect而不是代理进行负载平衡

我想用一种非常规的方式来使用Nginx。 我想在几个服务器之间进行负载均衡,而不是为那些我想redirect到的服务器设置代理内容。 也就是说,如果请求进入我的Nginx服务器,它应该302redirect到另一台服务器,通过从上游模块或等同物中随机选取一个。 我甚至不需要其他的上游块function,如权重(但如果可能的话,它们不会受到伤害)。 现在,我有以下configuration,这是我所需要的,但有点丑陋: upstream boxes { server 127.0.0.1:46011; server 127.0.0.1:46012; } server { listen 46011; return 302 http://box11.example.com$request_uri; } server { listen 46012; return 302 http://box12.example.com$request_uri; } server { listen 80; server_name example.com; location / { proxy_pass http://boxes; } } 有没有一个更简单的方法来处理这种情况,而不诉诸代理自己?

php-fpm使用了很多cpu

我在Ubuntu 12.04上使用wordpress,在我的VPS上使用Nginx + php-fpm。 有2个CPU核心+ 4096Mb内存。 我已经将MySQL数据库移动到另一台服务器,并设置远程访问。 一次有大约300个在线访问者,而且php-fpm使用了很多CPU: 我也使用APCcaching和batcache的WordPress的。 php-fpmconfiguration: listen = /var/run/fpm-macradar.sock ;listen.backlog = -1 pm = ondemand pm.max_children = 30 pm.start_servers = 15 pm.min_spare_servers = 10 pm.max_spare_servers = 20 ;pm.process_idle_timeout = 10s; pm.max_requests = 500 pm.status_path = /status chdir = / request_slowlog_timeout = 60s slowlog = /var/log/$pool.log.slow request_terminate_timeout = 120s rlimit_files = 131072 […]

获取“您正在寻找的页面暂时不可用。 请稍后再试”

我有一个vps运行Ubuntu + LEMP + Varnish。 一切都很好,直到我更新了服务器软件。 现在我在每页上都会看到“您正在寻找的页面暂时无法使用,请稍后再试”。 (标题响应是502) 我试图弄清楚。 这是我在更新的时候得到的。 以下是www.conf的不同之处: — /etc/php5/fpm/pool.d/www.conf 2013-10-22 14:30:39.000000000 +0000 +++ /etc/php5/fpm/pool.d/www.conf.dpkg-new 2014-06-20 00:40:35.000000000 +0000 @@ -30,7 +30,7 @@ ; specific port; ; '/path/to/unix/socket' – to listen on a unix socket. ; Note: This value is mandatory. -listen = /var/run/php5-fpm.sock +listen = 127.0.0.1:9000 ; Set listen(2) backlog. A value […]

Nginxconfiguration中工作进程的理想值是什么?

我有31GB内存8核心Web服务器,每分钟3k的当前负载。 目前nginx config中的worker_processes参数是4,根据我的理解意味着只会使用4个内核。 但是当我看到CPU性能时,我发现所有8个内核都有相同的负载。 为什么? 而且,使这个值为8会对我有帮助吗?

Nginx:403对某些文件扩展名禁止

你好,我正在使用Nginx的Amazon Ec2。 我最近设置nginx,当我例如访问blog.com/index.php它正确显示在浏览器中,但是当我访问像JPEG,PNG,JS等其他文件扩展名的文件变成403。 这是错误日志。 [error] 5637#0: *132 open() "/var/www/html/js/jquery.js" failed (13: Permission denied), client: 10.000.00.00, server: blog.com, request: "GET /js/jquery.min.js HTTP/1.1", host: "blog.com" js文件的权限统计(403 Forbiddon) -rw-r–r– 1 ec2-user ec2-user 93636 /var/www/html/js/jquery.js index.php文件的权限统计信息 -rw-r–r– 1 ec2-user ec2-user 1281 /var/www/html/index.php 我的Nginx conf文件: user nginx; worker_processes 4; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 8096; multi_accept on; use […]

从nginx中的两个位置之一拉取静态文件

我有一个小型的networking应用程序,上传文件到服务器,以便以后在网上显示。 目前我的服务器HD已满,我想添加第二个。 目前该应用程序和所有现有的文件都在drive1 ,我将添加drive2 。 是否有可能使用类似try_files检查多个位置来查看文件是否存在? 例如,如果有人要求mysite.com/images/2349879.jpg nginx会首先查找/drive2/images/2349879.jpg ,如果它不存在,它将检查检查drive1/images/2349879.jpg ,如果它不是那里服务404? 这是我目前的nginx.conf server { listen 80 default_server; listen 443 ssl; server_name www.MYSITE.com _; ssl_certificate /srv/apps/MYSITE-ssl/certs/MYSITE.com.pem; ssl_certificate_key /srv/apps/MYSITE-ssl/private/MYSITE.com.key; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers RC4:HIGH:!aNULL:!MD5:!kEDH; ssl_prefer_server_ciphers on; set $https off; if ( $scheme = 'https' ) { set $https on; } add_header Strict-Transport-Security "max-age=315360000; includeSubdomains"; keepalive_timeout 70; […]

Nginx静静地删除超过1128字节的标题行

我将Nginx设置为uWSGI应用程序(Django应用程序)的反向代理。 由于Django应用托pipe的内容的性质,有时URL会变长。 真的很长。 因此, Referer HTTP头有时也会变长。 这是问题。 如果Nginx超过1128字节(通过试错发现),Nginx将丢弃从客户端接收到的Referer 。 任何1128字节或更小的内容都会传递给上游服务器。 更大的东西被丢弃。 这是一个问题,因为Django的CSRF保护机制需要一个完整的Referer 。 这是我的Nginxconfiguration的相关部分。 文件: location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header Referer $http_referer; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } 我查看了Nginx的文档,找不到控制客户端标题最大长度的设置。 令人沮丧的是,我甚至开始为Nginx注入源代码,这也没有改变任何有用的东西。 我需要做什么才能让Nginx将Referer修改地传递给上游服务器? 版本信息 Ubuntu 14.04服务器64位 nginx / 1.4.6(Ubuntu) uWSGI 1.9.17.1-debian Django 1.7.0