背景
Slackが高すぎることにうんざりしたので、Mattermostに置き換えることにしました。パブリックIPを持つAWS Ubuntuボックスを入手し、Mattermostに従いました。インストール手順(主な違いは、別々のDBサーバーやストレージサーバーなどではなく、すべてを同じサーバーで実行していることです。それらはすべて同じマシンで実行されています。http://127.0.0.1)
私のドメイン(lobolabshq.com)は、ウィックスそこでサブドメインを追加しました:当サイトについて
AWS ボックスに Mattermost サーバーをインストールし、リクエストを nginx サーバーにプロキシするように nginx を設定しました。私の nginx プロキシ設定は次の場所に保存されており/etc/nginx/sites-available/mattermost
、次のようになります。
upstream backend {
server 127.0.0.1:8065;
}
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;
server {
listen 80;
server_name mattermost.lobolabshq.com;
location /api/v3/users/websocket {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 50M;
proxy_set_header Host $http_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-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_pass http://backend;
}
location / {
client_max_body_size 50M;
proxy_set_header Connection "";
proxy_set_header Host $http_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-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_cache mattermost_cache;
proxy_cache_revalidate on;
proxy_cache_min_uses 2;
proxy_cache_use_stale timeout;
proxy_cache_lock on;
proxy_pass http://backend;
}
}
問題
私が行くときhttp://mattermost.lobolabshq.com次のエラーが返されます:
ネットワーク エラー (tcp_error)
通信エラーが発生しました: 「操作がタイムアウトしました」 Web サーバーがダウンしているか、ビジー状態であるか、その他の問題が発生しているためにリクエストに応答できない可能性があります。 しばらくしてからもう一度お試しください。
分析/私が試したこと
Mattermostサーバーはローカルで問題なく動作します
私のMattermostサーバーはローカルでは問題なく動作していることを知っています。ドキュメント実行すると、curl http://127.0.0.01:8065
Mattermostのウェルカムページが返されます
nginx サーバーはリクエストを :80 ポートに正常に再ルーティングしました
nginx が正常に動作していることはわかっています。実行するとcurl http://localhost
、curl http://127.0.0.1
同じ mattermost のウェルカム ページが表示されるからです。
ドメインはAWSマシンを指しています
それは知っていますhttp://mattermost.lobolabshq.comまた、私の AWS ボックスのパブリック IP も指しています:
dig mattermost.lobolabshq.com
; <<>> DiG 9.8.3-P1 <<>> mattermost.lobolabshq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62124
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;mattermost.lobolabshq.com. IN A
;; ANSWER SECTION:
mattermost.lobolabshq.com. 1800 IN A 54.165.78.199
netstat出力
sudo netstat -anp | grep tcp
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1803/nginx -g daemo
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1134/sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1249/postgres
tcp 0 0 172.31.50.32:22 185.81.141.147:54411 ESTABLISHED 1860/sshd: ubuntu [
tcp 0 72 172.31.50.32:22 185.81.141.147:60344 ESTABLISHED 1603/sshd: ubuntu [
tcp6 0 0 :::22 :::* LISTEN 1134/sshd
tcp6 0 0 :::8065 :::*
外部リクエストが ngix に到達しない
ローカルで実行すると、curl localhost
nginx アクセス ログが更新されます。
127.0.0.1 - - [18/Jan/2017:06:41:09 +0000] "GET / HTTP/1.1" 200 2246 "-" "curl/7.47.0"
しかし、ブラウザからmattermost.lobolabshq.comにアクセスしても、そのようなエントリは表示されません。
答え1
私は、AWSボックスが属するセキュリティグループを更新し、ポート80でのすべての着信TCP接続を許可するだけで済みました。