流行のマストドンを構築しています。
http://qiita.com/tsuitta_dayo/items/dfd659ec68435653d16a
この記事を参考にインスタンスを立てる所まで行ったのですが、
http://<ドメイン名>
にアクセスしても、SSL接続にはリダイレクトされるのですが、
Nginxのデフォルトトップページに飛んでしまいます。
デフォルトのNginxのコンフィグファイルでは動きませんでした。
ProxyPassあたりがおかしいと思うのですが
設定でおかしい場所が分かりません。
どなたが御指南お願いします。
###発生している問題・エラーメッセージ
Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com. Thank you for using nginx.
このトップページに飛んでしまいます。
Http接続がリダイレクトされて、port3000で動いているdocker内(?)のマストドンに飛んでほしいです。
###該当のソースコード
/etc/nginx/conf.d/mastodon.conf
map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; listen [::]:80; server_name msdnaart.net; # Useful for Let's Encrypt location /.well-known/acme-challenge/ { allow all; } #SSL証明書はELBに置いています。 #なのでリダイレクトループ回避の設定を書いています。 location / { if ($http_x_forwarded_proto != https){ rewrite ^ https://$host$request_uri? permanent; } } } server { listen 443 ssl; listen [::]:443 ssl; server_name msdnaart.net; ssl_protocols TLSv1.2; ssl_ciphers EECDH+AESGCM:EECDH+AES; ssl_ecdh_curve prime256v1; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; # ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # ssl_dhparam /etc/ssl/certs/dhparam.pem; keepalive_timeout 70; sendfile on; client_max_body_size 0; root /home/mastodon/live/public; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; add_header Strict-Transport-Security "max-age=31536000"; location / { try_files $uri @proxy; } location /assets { add_header Cache-Control "public, max-age=31536000, immutable"; } location @proxy { 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 https; proxy_set_header Proxy ""; proxy_pass_header Server; proxy_pass http://127.0.0.1:3000; proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; tcp_nodelay on; } location /api/v1/streaming { 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 https; proxy_set_header Proxy ""; proxy_pass http://localhost:4000; proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; tcp_nodelay on; } error_page 500 501 502 503 504 /500.html; }
また、インスタンスのNATテーブルです。
qiitaで書かれている通りに
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
するとNginxに飛ぶ前にport3000に飛び、http接続がリダイレクトされません。
また、「連合」も動きませんでした。
現在のiptables -t natです
Chain PREROUTING (policy ACCEPT) target prot opt source destination DOCKER all -- anywhere anywhere ADDRTYPE match dst-type LOCAL Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination DOCKER all -- anywhere !127.0.0.0/8 ADDRTYPE match dst-type LOCAL Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all -- ip-172-18-0-0.ap-northeast-1.compute.internal/16 anywhere MASQUERADE all -- ip-172-17-0-0.ap-northeast-1.compute.internal/16 anywhere MASQUERADE tcp -- ip-172-18-0-5.ap-northeast-1.compute.internal ip-172-18-0-5.ap-northeast-1.compute.internal tcp dpt:4000 MASQUERADE tcp -- ip-172-18-0-6.ap-northeast-1.compute.internal ip-172-18-0-6.ap-northeast-1.compute.internal tcp dpt:3000 Chain DOCKER (2 references) target prot opt source destination RETURN all -- anywhere anywhere RETURN all -- anywhere anywhere DNAT tcp -- anywhere anywhere tcp dpt:4000 to:172.18.0.5:4000 DNAT tcp -- anywhere anywhere tcp dpt:3000 to:172.18.0.6:3000
###環境
AWS
EC2インスタンス 1
VPC 1
サブネット 1
ELB
リスナー
HTTP(port80) -> HTTP(port80)
HTTP(port443) -> HTTP(port80)
####追記
Nginxから443番ポートに飛ばされた後、
また80番に飛ぶんだからリダイレクトループするよな、と思い、
リスナーの設定を変更しました。
HTTP(port80) -> HTTP(port80)
HTTP(port443) -> HTTP(port443)
そうすると、今度はタイムアウトしていしまいます。
”curl http://127.0.0.1:443”は
「curl: (52) Empty reply from server」です。
"http://127.0.0.1:3000”はちゃんとトップページが帰ってくるので、
やはりポートの割振りの問題だと思います。
ここから先に進めないです・・・
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。