Articles of ruby on rails上

nginx:为不同的path使用不同的服务器

我有两个Rails应用程序坐在同一台机器上的两个不同的URI后面。 nginxconfiguration适用于自己的configuration文件中的每个应用程序。 现在其中一个应用程序必须慢慢合并到第二个应用程序中。 在URIpathapplication-one.com/register下有一个可访问的端点。 我只想要这个application-one.com/registerpath访问第二个应用程序和所有其他path(application-one.com/* except /register)仍然访问第一个应用程序。 有没有办法做到这一点,而不使用301redirect,因为我不能在我的情况下使用它们? 示例configuration文件如下所示: upstream unicorn_application_one { server unix:/tmp/unicorn_application_one.sock fail_timeout=0; } server { client_max_body_size …. … server_name application-one.com root /home/deployer/application_one/current/public; try_files $uri/index.html $uri @unicorn_application_one; location @unicorn_application_one { proxy_set_header … …. } location ^~ /assets/ { … } …. } 编辑: 我试过@joaumg的方法,但我不得不改变它: 每当我提取上游到外部文件,我得到了duplicate upstream错误。 所以我只是把@ joaumg的代码改成了: location /register { proxy_pass http://unix:/tmp/unicorn_application_two.sock; […]

基于Docker的Rails应用程序的nginx维护页面

我想我有一个鸡与鸡蛋的情况: 我的Rails应用程序是基于Docker的,我为nginx,Rails,Resque worker,Redis和MySQL提供了几个图像。 我目前的部署实施(简单地说)是: docker-compose build docker-compose down … compile assets … migrate docker-compose up 哪个效果很好,但是当然如果我在部署期间浏览到应用程序,我没有任何反应,这不是很好的用户体验。 我知道在站点处于维护模式时提供的nginx中设置了一个“维护”页面,但是nginx图像是docker-compose规范的一部分,所以也会下降。 将所有的图像放在一个docker-compose规范中,确实使部署更容易 – 如果任何图像(包括nginx)中的任何内容发生变化,将会自动部署。 特别是因为nginx,Rails,MySQL等都在同一个networking中。 如果nginx是docker-compose规范的一部分,那么我应该如何在应用程序重新部署时继续提供维护页面? (如果它有所作为,我使用主机上的gitlab和gitlab-runner容器来执行从回购部署。) 谢谢

在SSL + Nginx上,rails authenticate_or_request_with_http_basic不起作用

我已经通过authenticate_or_request_with_http_basic获得了我的Rails 3应用程序中的一个动作。 在我的开发机器上工作正常,但它并没有提示生产服务器上的http_basic用户/密码。 整个生产应用程序通过https / SSL在nginx上运行。 我在哪里可以解决这个问题? http basic auth不能通过SSL工作? 还是有一个nginx设置,我需要看看? TIA

仅将静态资产部署到具有单独的应用程序服务器的Web服务器

使用Rails 3.0.7和git,用capistrano进行部署。 我使用不同的机器作为Web和应用程序服务器。 我无法将应用程序代码部署到Web服务器,只有静态资产 – 基本上是公共/文件夹。 这似乎很普遍,但没有运气寻找最佳做法。 围绕capistrano处理这个案件有什么build立吗? 否则,我想添加任务来创build结构,但从应用程序服务器scp公共目录将是解决scheme。

Nginx非常缓慢地提供静态数据

我在nginx反向代理之后托pipe一个RoR应用程序,并configurationnginx直接提供所有静态数据,而不将它传递给RoR应用程序(由瘦服务器托pipe)。 现在有趣的是,图像,样式表,JavaScript等下载真的很慢,<10kB / s。 但是,如果我尝试直接从瘦服务器下载相同的文件,它将以全速> 1MB / s的速度下载。 例: www.example.com/files/big_file.zip – >非常懒 www.example.com:3000/files/big_file.zip – >非常faaast 有人有一个想法,这个瓶颈可能发生在哪里? 或者有人可以给我提供一些nginx的configuration思路? 有关环境的更多信息:英特尔酷睿i7-920四核8GB内存 Debian Squeeze Nginx 1.0.6 这是nginx.conf user www-data; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr – $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' […]

目前的NGINX是否有上传大文件的缓冲区支持?

我正在写一个ruby的rails应用程序,它有大量的file upload。 (20-100MB)。 我已经研究了如何在不占用轨道进程的情况下做到这一点。 我遇到了一个专门做这个的nginx模块。 (http://www.grid.net.ru/nginx/upload.en.html) 但是,在我看来,当我看到日志和我的服务器,而上传一个大文件,似乎缓冲,然后再发送到我的轨道进程。即使没有安装nginx模块上传模块。 我的问题是:看起来像nginx是这样做的默认安装…我仍然需要安装和使用上传模块? 这里究竟发生了什么? 〜柯克

你如何确保你的Rails服务器正在运行

确保Rails服务器在严重崩溃或进程死亡后自动重启的常用方法是什么? 你如何处理悬挂过程? 我的nginx和瘦我的生产服务器上运行 – 你会build议把他们之间的东西? 或使用另一台服务器?

502服务器上的坏的网关,为什么?

我正在为我正在工作的应用程序进行负载testing,在我得到的瘦configurationbehing nginx上 connect() failed (111: Connection refused) while connecting to upstream 当我发送更多的请求我的configuration可以处理。 在美洲狮我得到只有504超时。 为什么稀薄拒绝高负载连接?

如何将redmine移动到以nginx为代理的sub-URI

我想把nginx的redmine(听localhost:3000独立的乘客),从http://domain.com/redmine提供这个简单的nginxconfiguration: server { location /redmine/ { proxy_pass http://domain.com:3000/; } } 我根据这个HOWTO的指示重写了redmine的config/environments.rb ,redmine正确地重写了静态的资源URL,但是控制器的URLs不会被重写,例如。 设置指向http://domain.com/settings而不是http://domain.com/redmine/settings 。 我如何正确configurationredmine在nginx后面运行?

Cloudfront正在为源服务器上存在的资产caching来自nginx的404

我一直在为在nginx后面运行的rails应用程序设置多个云端点来修改页面加载时间。 基本上 – 我们之前build立了一个端点似乎工作正常,但是当我使用下面的asset_host声明添加到第二个端点时: config.action_controller.asset_host = Proc.new do |source| hosts = ["https://url1.cloudfront.net", "https://url2.cloudfront.net"] hosts[source.hash % 2] end 每当我部署(使用一个漂亮的香草capistrano部署脚本),一些资产不加载 – cloudfrontcachingnginx 404页面。 如果我使cloudfront的caching无效,资产全部加载正常。 capistrano脚本本身在重新启动独angular兽前进行编译,因此不应该使用引用新资产文件名的html,但是,在部署之后,cloudfront会立即caching404s。 我确实无法在每次部署之后使云端caching失效,这需要很长时间。 有没有人遇到过这个问题? 任何build议如何解决这个问题?