Articles of nginx

如何在多服务器环境中使用服务器端观察者?

我最近添加了另一台服务器到我的应用程序,并放置在他们面前的Nginx负载平衡器。 所以负载均衡器和两个运行相同应用的服务器。 这对我来说都是非常新的,而且我遇到了在单一服务器环境中不会遇到的问题。 其中之一就是应用程序的服务器端观察者在两个服务器上运行,这是不可取的。 例如,我将有以下观察者。 var initializing = true; Jobs.find({ $or: [{ processed: { $ne: true } }, { restart: true }] }).observeChanges({ added: function(id, doc) { if (!initializing) { // do stuff } } }); initializing = false; 然后在两台服务器上运行。 我只希望它运行在一个 – 我不在乎哪一个,但我猜是用户目前正在使用的是合理的。 我有什么select? 我不认为这是一个不寻常的情况,但我无法在网上find任何东西。 我目前的解决方法是从服务器中删除观察者,并有一个第三服务器,所有的观察。 但是,如果我的应用程序起飞,这不会扩展,这显然我希望它。 谢谢你的帮助。

模块化Sinatra应用程序在Passenger下返回404

我有一个模块化的Sinatra应用程序,在机架上执行时运行良好。 config.ru文件定义如下: map '/' do run My::Controllers::Default end map '/api' do run My::Controllers::Api end 当我运行nginx /乘客下的应用程序时,我什么也得不到404,即使是'/'路线。 怀疑路由有问题,我修改config.ru如下: run My::Controllers::Default 重新启动nginx后,我被提供了应用程序的默认页面。 然而,应用程序的默认页面到达apipath来获取一些文档显示,该部分返回404。鉴于config.ru能够运行默认控制器,我敢肯定,这个问题没有什么做能够加载所有相关的ruby文件 – 这似乎是在我发现的其他相关问题的问题。 考虑到这一点,我修改config.ru如下: map '/api' do run My::Controllers::Api end run My::Controllers::Default 在这一点上,我回到了404甚至“/”路线。 看起来map语句令Web服务器感到困惑,并且无法find正确的路由。 如果我只是使用机架运行应用程序,一切都如预期的那样,所以我真的不知所措。

Sublime SFTP + Rails + DigitalOcean – 上传文件

最近有兴趣拿起@ DigitalOcean的VPS。 这是一个运行Rails + Nginx和Unicorn的Ubuntu 14.04。 我想和Sublime一起工作,就像我在本地一样,所以我安装了商业SFTP插件。 我能够成功获得对我的VPS的远程访问,我甚至在本地下载了rails文件夹。 现在是困难的地方,我需要一些帮助。 我如何保持本地文件夹和远程文件夹同步? 通过Sublime右键单击文件夹提供了一些选项,如sync Local -> Remote ,这似乎是我想要的,除了每个上传failure (Permission denied) 。 我应该做到这一点本地进行远程同步? 还是我在这里? 如果我在基地,为什么我被拒绝的权限?

为什么Nginx只给移动设备一个502错误?

使用Nginx,我得到错误: Error 502 – Bad Request The server could not resolve your request for uri: http://domain.name/file/path 奇怪的是,当我的手机正在使用我手机的数据时,我只能得到这个错误。 当我在Wi-Fi上使用手机或使用台式电脑时,服务器可以提供一切正常的服务。 甚至当我通过Wi-Fi将我的iPad连接到我的手机时,我的手机充当了移动热点。 502错误代码表明,使用php-fpm反向代理或服务请求存在问题。 我没有做这些。 因为这个错误只发生在特定情况下,所以我认为它必须是我的手机发送的请求。 (Nexus 5,Chrome,Android棒棒糖) 我的nginx.conf和其他configuration文件正在通过testing。 我用了: sudo nginx -t 并说“configuration文件语法没问题”,“configuration文件testing成功”。 会发生什么事?

Nginx:ioctl(FIONBIO)worker_socket绑定失败

我已经在我的本地实验室环境中设置Nginx进行rtmptesting。 最初,我工作得很好。 但突然之间,它停止工作。 我不知道为什么。 search日志后,我发现这个错误信息。 任何人都可以帮助我 debugging错误日志: 2015/01/31 22:51:13 [debug] 12127#0:auto_push:创build套接字2015/01/31 22:51:13 [debug] 12127#0:auto_push:create socket'/ var / sock / nginx– rtmp.0'2015/01/31 22:51:13 [debugging] 12127#0:auto_push:删除现有的套接字'/var/sock/nginx-rtmp.0'2015/01/31 22:51:13 [emerg ] 12127#0:ioctl(FIONBIO)worker_socket绑定失败(2:没有这样的文件或目录)2015/01/31 22:51:13 [notice] 12125#0:收到signal(SIGCHLD)2015/01/31 22 :51:13 [注意] 12125#0:工人进程12127用代码2退出2015/01/31 22:51:13 [alert] 12125#0:工作进程12127用致命代码2退出,无法重新生成2015/01 / 31 22:51:13 [debug] 12125#0:shmtx强制解锁 谢谢!

修改nginx中代理结果的HTTP状态码

我有一个nginx反向代理服务于Web应用程序。 这个networking应用程序在某些情况下返回302redirect,我不能改变它。 但是,由于某些原因,我需要改变这个返回状态为301 。 我试过了 proxy_intercept_errors on; error_page 302 =301; 但显然这是=301部分作为新的位置。 所以我在找的是这样的: proxy_intercept_errors on; error_page 302 =301 $PROXY_HEADER_LOCATION; 我怎样才能做到这一点?

AWS ELB自定义标题Nginx

自定义HTTP头被删除的ELB的一个奇怪的行为。 我正在使用Nginx作为服务器,具有以下虚拟主机configuration: server { listen 80; server_name example.com; location / { index index.html index.htm; add_header Custom Test; } } 通过使用IP地址直接访问服务器,可以find标题“Custom:Test”。 但是一旦这个服务器驻留在ELB后面。 自定义标题不再显示。 我可以知道这是否与我的设置有关吗?

在Nginx中向Redis添加一个键/值

我想与nginx的redis进行通信,以便在列表中存储哪些请求是在图像上进行的,特别是在未在另一台服务器上进行代理的图像上。 我安装了OpenResty,以便使用redis2_query和redis2_pass命令。 这是我的nginxconfiguration: location ~* \.(jpg|jpeg|gif|png)$ { try_files $uri @imagenotfound; redis2_query lpush founds $uri; redis2_pass 127.0.0.1:6379; } location @imagenotfound { proxy_pass http://imgdomain.com/$uri; proxy_set_header Host imgdomain.com; proxy_set_header Server imgdomain.com; redis2_query lpush notfounds $uri; redis2_pass 127.0.0.1:6379; } 我做的每一个请求都返回一个整数,而且据我所知, redis2_pass返回查询的结果。 反正有没有返回这个结果,只是执行查询? 如果我删除了redis2_query和redis2_pass ,图像显示正确。 在此先感谢您的帮助!

Carrierwave +雾+ aws s3和轨道在生产

我刚刚从paperclip迁移到carrierwave,并成功地上传到S3在我的机器上本地工作,但在将Rails应用程序部署到我的服务器(使用Ubuntu,Passenger with nginx,是一个让它工作的任务)之后,当我尝试上传一个图像,它试图将其保存到公共/上传/ …出现了一个权限被拒绝的错误,我到处寻找和search,找出为什么它不工作,什么都没有find。 我的上传器文件: class AvatarUploader < CarrierWave::Uploader::Base include CarrierWave::Compatibility::Paperclip storage :fog def store_dir "/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end end fog.rb CarrierWave.configure do |config| config.storage = :fog config.fog_credentials = { provider: 'AWS', # required aws_access_key_id: '*******', # required aws_secret_access_key: '********', # required region: 'ap-southeast-2', # optional, defaults to 'us-east-1' } config.fog_directory = 'publicrant' # required # config.fog_public […]

403在Laravel Homestead安装上的禁止nginx / 1.6.2

我不知道我能做些什么来完成我的Laravel Homestead安装。 一些信息: laravel / homestead(virtualbox,0.2.4) stream浪基地很清醒32。 我不能在SSH中使用serve命令。 这是我的家园.yaml: — ip: "192.168.10.10" memory: 2048 cpus: 1 authorize: ~/.ssh/id_rsa.pub keys: – ~/.ssh/id_rsa folders: – map: /Users/bolos/base to: /home/vagrant/base sites: – map: homestead.app to: /home/vagrant/base/homestead/public databases: – homestead variables: – key: APP_ENV value: local provider: virtualbox # blackfire: # – id: foo # token: bar 我不知道我还能提供什么帮助,但随时可以问。 先谢谢你。