【问题标题】:rails puma nginx development mode localhostrails puma nginx 开发模式 localhost
【发布时间】:2018-01-22 03:50:41
【问题描述】:

场景是我在 aws 上创建了一个实例,并在该实例上克隆了我的 rails 项目并在 localhost:3000 上使用 rails s 命令运行。并且服务器正在使用 PUMA 运行。

现在我想查看我的应用在公共 DNS 上运行,即 http://ec2-13-56-156-255.us-west-1.compute.amazonaws.com/

为此,我已经安装了 nginx Web 服务器,并且能够看到 nginx 的默认索引页面,但是当我在 nginx.conf 文件中进行更改以查看我的应用程序时,它给了我 403 错误。变化如下。

文件路径:/etc/nginx/nginx.conf


user ec2-user;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
 worker_connections 1024;
}

http {
  log_format  main  '$remote_addr - $remote_user [$time_local] 
 "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

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;


include /etc/nginx/conf.d/*.conf;
index   index.html index.htm;

upstream app {
 server 127.0.0.1:3000;
 #server unix:///path_to_my_app/tmp/sockets/puma.sock fail_timeout=0;
}

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  13.56.156.255;
    root        /home/ec2-user/Projects/aqua_web_v1.0;
    #root         /usr/share/nginx/html;

   #location / {
   #}

   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;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

【问题讨论】:

  • 您是否尝试从控制台运行 rails,例如 rails s
  • 是的 @kunashir 来自 aws 实例上的控制台。
  • 试试rails s -b 0.0.0.0
  • 试过还是得到 403 Forbidden 错误

标签: ruby-on-rails nginx puma


【解决方案1】:

您需要通过复制默认文件来创建服务器块配置文件:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com

现在使用sudo previlege 打开该文件

sudo nano /etc/nginx/sites-available/example.com

然后将您的主机名添加到:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/example.com;
        index index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

有关更多详细信息,请查看此 digitalocean 指南: https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04

【讨论】:

  • server_name 应该是 localhost?
  • server_name 应该是 localhost?并且有必要创建块我们不能在我的情况下仅在 ngnix.conf 文件中进行配置,因为我只是想查看在公共 dns 的本地运行的我的应用程序
猜你喜欢
  • 1970-01-01
  • 2016-06-20
  • 2016-10-12
  • 2015-05-24
  • 1970-01-01
  • 2020-05-21
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多