実現したいこと
RailsをAPIとして使用し、Reactでフロント部分を作ったWebアプリをDockerで動かしSSL化してデプロイしたいです。
すでにHTTPでデプロイは出来ており、ドメイン取得・DNS設定済です。
ただHTTPではアカウント作成などの処理がCORSブロックされて行えないため、HTTPS化したいです。
身内で使うアプリのため、HTTPS化せずとも正常に処理が行えるのであればその方法でも構いません。
発生している問題・分からないこと
- SSL化を行うため、nginxコンテナを追加しました。
- コンテナ自体は全てエラーなく動いていますが、https://<ドメイン名>/registerにアクセスしてもページは表示されず、http://<ドメイン名>:3000/registerにアクセスすることはできます。
- 証明書はLet's encryptで取得しました。/etc/letsencrypt/live/<ドメイン名>/にcert.pem chain.pem fullchain.pem privkey.pemがあります。
- 使用しているVPS:X Server VPS
ディレクトリ構造
├── docker-compose.yml ├── frontend │ ├── Dockerfile │ ├── node_modules │ ├── package-lock.json │ ├── package.json │ ├── public │ └── src ├── nginx │ ├── cert.pem │ ├── certbot │ ├── chain.pem │ ├── conf.d │ ├── html │ └── nginx.conf ├── server │ ├── Dockerfile │ ├── Gemfile │ ├── Gemfile.lock │ ├── Rakefile │ ├── app │ ├── bin │ ├── config │ ├── config.ru │ ├── db │ ├── entrypoint.sh │ ├── gaming-cat.png │ ├── lib │ ├── log │ ├── logo.png │ ├── public │ ├── storage │ ├── test │ ├── tmp │ └── vendor └── tmp └── db
nginx.conf
server { listen 80; server_name <ドメイン名>; location / { proxy_pass http://web:8000; 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; } } server { listen 443 ssl; server_name <ドメイン名>; ssl_certificate /etc/letsencrypt/live/<ドメイン名>/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/<ドメイン名>/fprivkey.pem; location / { proxy_pass http://web:8000; 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; } } location ^~ /.well-known/acme-challenge/ { allow all; root /var/www/certbot; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; } location ~ /.well-known { allow all; root /var/www/certbot; }
docker-compose.yml
version: "3.9" services: db: image: postgres volumes: - ./tmp/db:/var/lib/postgresql/data environment: TZ: Asia/Tokyo POSTGRES_PASSWORD: <パスワード> web: build: context: ./server dockerfile: Dockerfile command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 8000 -b '0.0.0.0'" volumes: - ./server:/myapp ports: - "8000:8000" depends_on: - db frontend: build: context: ./frontend dockerfile: Dockerfile working_dir: /usr/src/app volumes: - ./frontend:/usr/src/app ports: - "3000:3000" stdin_open: true nginx: image: nginx volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/html:/usr/share/nginx/html - ./nginx/certbot/conf:/etc/letsencrypt - ./nginx/certbot/www:/var/www/certbot ports: - "80:80" - "443:443" depends_on: - web command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
該当のソースコード
特になし
試したこと・調べたこと
上記の詳細・結果
- 証明書のパスがあっているか
- nginx.confの内容
- Docker logs ~でエラーがないか
などについて調べましたが、解決しませんでした。
補足
特になし

0 コメント