我刚刚安装了nginx,unicorn和一个全新的rails应用程序的VM。我查看了nginx配置文件,我不明白它是如何连接到独角兽的,特别是因为似乎没有任何上游设置(这是大多数教程所说的你需要的)。
以下是我的配置设置:
/home/unicorn/unicorn.conf
listen "127.0.0.1:8080"
worker_processes 2
user "rails"
working_directory "/home/rails"
pid "/home/unicorn/pids/unicorn.pid"
stderr_path "/home/unicorn/log/unicorn.log"
stdout_path "/home/unicorn/log/unicorn.log"
/ etc / nginx / sites-enabled / default - 仅支持启用网站的目录中的默认文件
server {
listen 80;
root /home/rails/public;
server_name _;
index index.htm index.html;
location / {
try_files $uri/index.html $uri.html $uri @app;
}
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mp3|flv|mpeg|avi)$ {
try_files $uri @app;
}
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://app_server;
}
}
服务器似乎正在定义一个位置@app,并将请求传递给http://app_server
...我不知道它在哪里获得app_server ...是否会在其他地方定义上游?
更多信息,本文与我的vps具有完全相同的设置。 https://www.digitalocean.com/community/articles/how-to-1-click-install-ruby-on-rails-on-ubuntu-12-10-with-digitalocean
答案 0 :(得分:0)
通常app_server
将在另一个文件中定义为上游。例如 - 在我的debian系统上,我有一个类似于你的位置,指向一个名为www
的上游
在我的/etc/nginx/sites-enabled
目录中,我有一个名为upstream_www_app
的文件,其中包含以下内容
upstream www {
server localhost:24910 fail_timeout=0 weight=5;
}
24910是我的应用程序config/unicorn.rb
中定义的端口,而我的主nginx.conf
包含sites-enabled
目录中的所有文件。