Articles of nginx

Nginx子域重写到服务器目录

我们正在转向Apache的一些Nginx服务器。 虽然我们已经使用Nginx的各个网站,它已经在一个最基本的configuration。 但是,我们托pipe的“网站”(实际上是多个)之一是一个沙箱types的网站,以便我们的开发人员可以login到服务器创build一个目录,并且他们有一个网站启动并运行。 我想弄清楚如何用Nginx来复制这个,但是到目前为止我还是无法把头围住。 任何帮助,将不胜感激。 服务器目录设置示例: /home/[USER]/sandbox/site1 /home/[USER]/sandbox/site2 … etc. Apacheconfiguration: <VirtualHost *:80> ServerName example.com ServerAlias *.example.com ServerAlias *.*.example.com RewriteEngine on RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.example\.com$ [NC] RewriteRule ^(.*)$ /home/%1/sandbox/%2/$1 [L] <Directory /> AllowOverride All Require all granted </Directory> </VirtualHost> 结果域: [USER].site1.example.com [USER].site2.example.com …. etc. 在Nginx中parsing主机并在内部正确路由到所述目录会是什么样子?

在nginx中为每个站点部分设置不同的caching头

对于不同的网站部分,我们使用不同的caching标题。 例如: /wp-admin部分根本不应该被caching,并且/blog部分只有4个小时,而不是默认的2天。 目前我已经通过重复location来解决这个问题,但是这导致了一个相当冗长的文件。 有一个更简洁的方法来实现这一点? 当前nginxconfiguration的例子 location /wp-admin/ { etag off; if_modified_since off; add_header Last-Modified ""; add_header Cache-Control no-cache; try_files $uri $uri/ /index.php?$args; location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } location / { expires 2d; add_header Cache-Control "public"; try_files $uri $uri/ /index.php?$args; location ~ \.php$ { include fastcgi_params; fastcgi_pass […]

获取networking接口Nginx正在接收请求

我有一个服务器与多个networking接口,我想写一个代理服务器,这将监听所有这些IP。 我的configuration到目前为止: server { listen 111.111.111.111:40000; listen 111.111.111.222:40000; location / { resolver 8.8.8.8; proxy_bind <listen interface here>; proxy_pass http://$host; } } 如果我省略了proxy_bind指令,Nginx会从默认的IP发送请求,而不是我发送请求的请求。 有没有可能解决这个问题? 如果我能得到IP,请求来了,它会解决我的问题。

nginx:configuration文件testing失败

我使用DirectAdmin和Nginx的安装,我有巨大的客户端,我有时看到“Nginx的503错误”,我有3Gb内存与790使用RAM … 而现在我想增加工作者连接,但在这个文件中我没有这个项目: nano /etc/nginx/nginx.conf 当我手动添加这个项目,我看到下面的错误Nginx重新启动后: [root@server ~]# service nginx restart nginx: [emerg] "worker_connections" directive is duplicate in /etc/nginx/nginx-events.conf:1 nginx: configuration file /etc/nginx/nginx.conf test failed 另外当我增加“worker_processes 1;” 到5,重新启动nginx后,看到下面的输出还是1: [root@server ~]# grep processor /proc/cpuinfo | wc -l 1 下面是我的configuration文件的输出: #user nginx; # The number of worker processes is changed automatically by CustomBuild, according to the number […]

Nginx无法启动 – .sock文件没有find/没有这样的目录

我试图用uwsgi和nginx运行我的django应用程序。 过去一个月一直在工作,但是今天我在/ sites-enabled / dir中编辑了文件,现在nginx不会启动。 这里是nginx的错误日志 更新 通过从my / sites-enabled目录中删除.sock文件,能够再次运行nginx。 还想知道这个错误信息是什么意思 – 谷歌search的答案没有什么用处。

MongoDB活动状态失败

我的服务器运行在Nginx Ubuntu 16.04 LTS上。 我想安装mongoDB使用node.js然后我按照这个教程,但是当我写状态命令我有这个。 ● mongodb.service – High-performance, schema-free document-oriented database Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Tue 2016-07-26 20:21:15 CEST; 7s ago Process: 4527 ExecStart=/usr/bin/mongod –quiet –config /etc/mongod.conf (code=exited, status=14) Main PID: 4527 (code=exited, status=14) Jul 26 20:21:15 ns3039456.ip-94-23-252.eu systemd[1]: Started High-performance, schema-free document-oriented d Jul 26 […]

当If-None-Match / If-Modified-Since匹配时,为什么NGinx在HTTP 304响应中发送内容?

我的默认NGinx安装正在返回一个304 Not Modified响应,该请求有一个匹配的If-None-Match头和一个非过期的If-Modified-Since头,这是正确的行为,但是NGinx也会把资源的内容添加到304响应。 人们会认为NGinx不会添加内容,只是简单地返回一个空的主体,告诉浏览器使用他们的caching资源就足够了。 是否有这种行为的原因,我该如何禁用它?

如果存在则使用nginx返回文件,传递给代理else

任务是从查询参数获取参数的文件名,检查文件是否存在,以及: 如果存在,则返回此文件 否则,将请求传递给Django后端 我设法得到参数,并检查文件是否存在,但我不知道下一步该怎么做: location /media/ { set $file "/static/$arg_key"; if (-f $file) { // Return the file } else { // include proxy_params; // proxy_pass http://unix:/opt/django/gunicorn.sock; } }

在另一个位置添加服务器

背景:我已经build立了一个典型的网站,让用户上传照片和video(没有太大,介意)。 目前,我在位于英国伦敦的DigitalOcean小滴(Nginx,PHP,MySQL,用于会话/caching的Memcached)上托pipe这个网站。 我有一个位于爱尔兰的S3存储桶,我从服务器上传文件。 问题:问题是不在英国和欧洲的用户上传速度较慢,有时要慢得多(例如从美国或澳大利亚)。 这让他们感到沮丧。 AWS有一些非常酷的东西,比如S3 Transfer Acceleration和S3 Presigned POSTs (让用户直接上传到没有AWS凭证的存储桶)。 但是后者不是AJAX友好的 – 你可以要求S3返回一个XML响应,但是由于这是跨域的,JS不可读。 所以没有办法知道密钥(文件)的名称。 据我所知。 我也尝试过使用AWS JavaScript SDK直接上传到S3存储桶,但是这意味着我必须强制我的用户重新进行身份validation,我想(我想避免这种情况)。 我想在美国增加一个服务器,例如分离服务,所以两个Web服务器,一个会话服务器和一个数据库服务器。 然后使用基于延迟的Route 53路由select路由到最低延迟的Web服务器。 但是,对于Web服务器而言,会话和数据库服务器在不同位置存在高延迟问题。 和粘滞的会议问题。 我想知道是否有人有任何build议,也许我是过度复杂,有一个更简单的解决scheme。 任何意见是极大的赞赏!

将stream量分割为单个IP后面的多个服务器

我在一个数据中心只有一个机柜,只有三个IP地址,而在办公室,我有一个100MB的光纤,我可以用它来托pipe。 在一个多余的电子产品的地方,我拿起了几台F5 BigIP 3600,价格大概在100美元左右,我想我可以在办公室和数据中心使用它们,但是经过将近一年的时间,我已经放弃了。 一切似乎都应该如何设置,所有的内部testing都会通过,但试图实际使用它却不能正向通信。 考虑到这一点,我希望能够将单个广域网上的stream量分割为多个内部地址。 我试图启动一个VPS盒子,并将Windows,Ubuntu,CentOS和OSX全部安装在一台服务器上,但这意味着4个IP地址(更不用说一旦我开始克隆它们就会使用多less个IP地址)。 我昨天晚上发现我可以使用Nginx使用反向代理来执行HTTP通信,但是有没有更好的方法可以让我连接SSH和其他服务/使用域的端口? 例如,如果我有 http://domain-on-server1.com http://domain-on-server2.com 在我的DNS上,我会为每个域创build一个logging,以转发到: main.external.ip 然后将所有的端口(不仅像Nginx的80)转发到适当的内部IP。 我不介意做一些更多的研究,但如果你能帮助指导我,如果我正在寻找像NAT,反向代理,端口转发(但基于域)或我将不胜感激。 我有一些PFSense的经验,但昨天看Youtube上的Squid3教程似乎并不是我想要的。 我真的不需要负载平衡。 就像现在一样,如果没有新的F5 / Cisco设置,几乎看起来最接近我可以做Nginx,然后设置我的ssh客户端来连接通过其他服务器作为代理,但感觉应该有一些更容易一些。