我被困在非常奇怪的Nginx的行为。 我有2个RoR网站,与Puma.First网站(app1.com)工作就像应该,但是当我尝试访问app2.com,我只是得到app1.com页面,但与域名app2。 COM。 最感兴趣的是,如果在nginx.conf中我replace了/ etc / nginx / sites-enabled / ; *以直接链接到站点(即sites-enabled / app2; sites-enabled / app1;)我可以得到来自app2的正确响应,但是app1会更改app1的位置。 我错过了什么?
所以这是我的Nginxconfiguration:
upstream puma { server unix:///home/dev/www/apps/app1/shared/tmp/sockets/puma_app1.sock; } server { listen 80; server_name app1.com root /home/dev/www/apps/app1/current/public; access_log /home/dev/www/apps/app1/shared/log/nginx.access.log; error_log /home/dev/www/apps/app1/shared/log/nginx.error.log info; try_files $uri/index.html $uri @puma; location @puma { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; proxy_pass http://puma; # proxy_set_header X-NginX-Proxy true; } location /home/dev/www/apps/app1/current/public/assets/* { #location ~* ^/assets/ { expires 1y; add_header Cache-Control public; add_header Last-Modified ""; add_header ETag ""; break; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; }
对于第二个应用程序:
upstream puma2{ server unix:///home/dev/www/apps/app2/shared/tmp/sockets/puma_app2.sock; } server { listen 80; server_name app2.com; root /home/dev/www/apps/app2/current/public; access_log /home/dev/www/apps/app2/shared/log/nginx.access.log; error_log /home/dev/www/apps/app2/shared/log/nginx.error.log info; try_files $uri/index.html $uri @puma2; location @puma2 { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; proxy_pass http://puma2; # proxy_set_header X-NginX-Proxy true; } location /home/dev/www/apps/app2/current/public/assets/* { expires 1y; add_header Cache-Control public; add_header Last-Modified ""; add_header ETag ""; break; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; }
nginx.conf文件是:
user dev; worker_processes auto; error_log /var/log/nginx/error.log error; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; tcp_nopush on; # include /etc/nginx/sites-enabled/app2; # include /etc/nginx/sites-enabled/app1; include /etc/nginx/sites-enabled/*; keepalive_timeout 65; gzip on; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; }
为了提供完整的信息,我应该说,所有的应用程序主机上的数字海洋VPS,但app1的名称服务器是DO(但是在godaddy上买了,我只是传输名称服务器,然后添加A和CNAMEloggingDO帐户)和域名的app2是在godaddy,所以我添加了一个A和CNAMElogging,使其工作。
好的,我明白了,什么是错的。 伙计们,不要忘记把server_name指令放进你的域名,还要把www域名。 我不知道为什么我应该这样做,但它的作品(在其他服务器上,我不必添加此)