2015-03-19 64 views
0

昨天我能够看到默认页面,如您看到here。今天无法使用Nginx + Unicorn访问rails应用程序

但我修改nginx的访问在麒麟上运行我的Rails应用程序配置,并开始获得404

/etc/nginx/nginx.conf

user www-data; 
worker_processes 4; 
pid /var/run/nginx.pid; 

events { 
    worker_connections 768; 
    # multi_accept on; 
} 

http { 
    ## 
    # Basic Settings 
    ## 

    sendfile on; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 

    include /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    ## 
    # Logging Settings 
    ## 

    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 

    ## 
    # Gzip Settings 
    ## 

    gzip on; 
    gzip_disable "msie6"; 

    ## 
    # Virtual Host Configs 
    ## 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

的/ etc/nginx的/网站可用/默认

upstream unicorn { 
    server unix:/tmp/unicorn.integrity_matters.sock fail_timeout=0; 
} 

server { 
    listen 80; 
    server_name localhost; 
    root /home/ubuntu/integrity_matters/current/public; 

    location ~ ^/assets/ { 
    gzip_static on; 
    expires max; 
    add_header Cache-Control public; 
    } 

    try_files $uri/index.html $uri @unicorn; 
    location @unicorn { 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_pass http://unicorn; 
    } 

    error_page 500 502 503 504 /500.html; 
    client_max_body_size 20M; 
    keepalive_timeout 10; 
} 

MY_APP_ROOT /配置/ unicorn.rb

root = "/home/imdeploy/integrity_matters/current" 
working_directory root 
pid "#{root}/tmp/pids/unicorn.pid" 
stderr_path "#{root}/log/unicorn.log" 
stdout_path "#{root}/log/unicorn.log" 

listen "/tmp/unicorn.integrity_matters.sock" 
worker_processes 2 
timeout 30 

# Force the bundler gemfile environment variable to 
# reference the capistrano "current" symlink 
before_exec do |_| 
    ENV\["BUNDLE_GEMFILE"\] = File.join(root, 'Gemfile') 
end][2] 

我还证实连接到EC2安全组允许22,80和443的端口。请为EC2找到attached安全规则。

我重新启动了nginx和独角兽多次,并验证nginx和独角兽正常运行。

我也验证了nginx访问和错误日​​志,但是看不到任何活动。

请帮帮忙,

回答

0

最后我可以修复它。问题在于AWS期望让nginx SSL感知。

所以为了使它工作,我创建了自签名证书并修改了nginx配置。以下是最终配置。

的/ etc/nginx的/网站可用/默认

upstream integrity_matters_server { 
    server unix:/tmp/unicorn.integrity_matters.sock fail_timeout=0; 
} 

server { 
    listen 80; 
    server_name ec2-52-10-245-227.us-west-2.compute.amazonaws.com; 
    rewrite ^/(.*) https://ec2-52-10-245-227.us-west-2.compute.amazonaws.com permanent; 
} 

server { 
    listen 443; 
    server_name ec2-52-10-245-227.us-west-2.compute.amazonaws.com; 
    root /home/ubuntu/integrity_matters/current/public; 

    ssl on; 
    ssl_certificate  /etc/nginx/ssl/nginx_im.crt; 
    ssl_certificate_key /etc/nginx/ssl/nginx_im.key; 
    ssl_protocols  SSLv3 TLSv1; 
    ssl_prefer_server_ciphers on; 

    location ~ ^/assets/ { 
    gzip_static on; 
    expires max; 
    add_header Cache-Control public; 
    } 

    try_files $uri @integrity_matters; 
    location @integrity_matters { 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto https; 
    proxy_set_header Host $host; 
    proxy_redirect off; 
    proxy_pass http://integrity_matters_server; 
    } 

    error_page 500 502 503 504 /500.html; 
    client_max_body_size 20M; 
    keepalive_timeout 10; 
} 

post而我们在进行SSL配置也非常有用。

0

nginx.conf包括配置文件路径为/etc/nginx/sites-enabled/*;/etc/nginx/sites-available/default默认的配置文件。

sites-enabled更改为sites-available,然后重试。

+0

它已经符号链接。 – 2015-03-19 08:03:18

相关问题