Приложение rails не работает под обратным прокси nginx - PullRequest
0 голосов
/ 04 декабря 2018

Здравствуйте, я пытаюсь заставить это работать мое приложение dockerized rails через обратный прокси-сервер nginx, nginx хорошо обрабатывает статические файлы, но когда я пытаюсь войти в систему или просмотреть приложение, страница ошибки nginx выдает 500

Возможно, я что-то упустил или из-за неправильной конфигурации невозможно получить доступ к myapp

в / etc / nginx / nginx.conf

user www-data;
worker_processes auto;
worker_rlimit_nofile 1024;

events {
  multi_accept on;
  worker_connections 1024;
}

http {
  charset utf-8;
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  server_tokens off;
  log_not_found off;
  types_hash_max_size 2048;
  client_max_body_size 16M;

  # MIME
  include mime.types;
  default_type application/octet-stream;

  # logging
  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log warn;

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

в / etc / nginx / sites-available / my_app.conf

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name my.app;
  root /var/www/myapp/public;

  # SSL
  ssl_certificate /etc/letsencrypt/live/my.app/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/my.app/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/my.app/fullchain.pem;
  include snippets/letsencrypt.conf;
  include snippets/ssl.conf;

  # reverse proxy
  location / {
    # proxy_pass needs to be name of service on docker compose to connect with container
    proxy_pass http://0.0.0.0:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_cache_bypass $http_upgrade;

    # index fallback
    try_files $uri $uri/ /index.html;
  }

  # . files
  location ~ /\. {
    deny all;
  }

  # assets, media
  location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?)$ {
    expires 7d;
    access_log off;
  }

  # svg, fonts
  location ~* \.(?:svgz?|ttf|ttc|otf|eot|woff2?)$ {
    add_header Access-Control-Allow-Origin "*";
    expires 7d;
    access_log off;
  }

  # gzip
  gzip on;
  gzip_vary on;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_types text/plain text/css text/xml application/json application/javascript application/xml+rss application/atom+xml image/svg+xml;

  # error pages
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
    root   /var/www/myapp/public;
  }

  error_page 404 /404.html;
  location = /404.html {
    root /var/www/myapp/public;
  }
}

# subdomains redirect
server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name _ *.my.app;

  # SSL
  ssl_certificate /etc/letsencrypt/live/my.app/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/my.app/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/my.app/chain.pem;
  include snippets/letsencrypt.conf;
  include snippets/ssl.conf;
  return 301 https://my.app$request_uri;
}

# HTTP redirect
server {
  listen 80;
  listen [::]:80;
  server_name _ .my.app my.app;
  include snippets/letsencrypt.conf;
  return 301 https://my.app$request_uri;
}
  • nginx находится на хосте Ubuntu 18.04 без брандмауэра на данный момент
  • контейнер rails указывает на http://0.0.0.0:3000
  • в Puma может видеть, когда браузер попадает на целевую страницу, которую он показывает в журнале

Есть идеи?Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...