Назад | Перейти на главную страницу

Как заставить nginx обслуживать общедоступный IP-адрес

Задний план

Мне надоело, что слабина слишком дорогая, поэтому я решил заменить ее на материтимост. Я получил ящик AWS ubuntu с общедоступным IP и следил за самым важным Инструкция по установке (основное отличие в том, что я запускаю все на одном сервере, а не на отдельном сервере базы данных и сервере хранения и т. д., все они работают на одном компьютере, т.е. http://127.0.0.1)

Мой домен (lobolabshq.com) управляется wix, и поэтому я добавил поддомен: questionmost.lobolabshq.com

Я установил самый важный сервер на ящик AWS, а затем я настроил 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)

Произошла ошибка связи: «Превышено время ожидания операции». Возможно, веб-сервер не работает, слишком занят или испытывает другие проблемы, не позволяющие ему отвечать на запросы. Возможно, вы захотите повторить попытку позже.

Анализ / Что я пробовал

Сервер Mattermost работает нормально локально

Я знаю, что мой самый главный сервер работает нормально локально, потому что, согласно документы когда я бегу curl http://127.0.0.01:8065 он возвращает самую важную страницу приветствия

Сервер nginx успешно перенаправляет запросы на: порт 80

Я знаю, что nginx работает нормально, b / c, когда я запускаю curl http://localhost или curl http://127.0.0.1 Я также получаю ту же самую важную страницу приветствия.

домен указывает на машину AWS

Я знаю это http://mattermost.lobolabshq.com также указывает на мой публичный IP-адрес aws box:

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"

но я не получаю такой записи, когда открываю в браузере файл materialmost.lobolabshq.com

Мне просто пришлось обновить группу безопасности, частью которой был мой aws-бокс, и разрешить всем входящим TCP-соединениям на порту 80 работать.