У меня есть установка
докер - сочиняет:
nginx:
restart: always
build: nginx/. // loads nginx:alpine image + copies the config
ports:
- 80:80
- 1337:1337
links:
- rose:rose
rose:
build: rose/. // simple website, based on node:latest
restart: always
expose:
- 1337
nginx.conf:
upstream docker-rose {
server rose:1337;
}
server {
listen 0.0.0.0:1337;
gzip on; // + some other gzip crap
location ~ ^/(.*)/ {
proxy_pass http://docker-rose;
proxy_redirect off;
proxy_set_header Host $http_host; // + some other proxy headers thingy
}
}
докер - составляет PS:
nginx_1 nginx -g daemon off; Up 0.0.0.0:1337->1337/tcp, 0.0.0.0:80->80/tcp
rose_1 npm start Up 1337/tcp
Таким образом, я ожидаю, что nginx, чтобы слушать внешний порт 1337 года и передать все повысился через внутренний порт 1337 года.
Однако, когда я открываю localhost:1337 в браузере, я добираюсь
nginx_1 | 29.04.2018 14:57:22 [ошибка] 9#9: *28 "/etc/nginx/html/index.html" не найден (2: Никакой такой файл или каталог), клиент: 172.19.0.1, сервер: запрос: "ДОБЕРИТЕСЬ / HTTP/1.1", разместите: "localhost:1337"
Это имеет одно задание: перенаправить everything_from_outside:1337 к internal_container:1337. С какой стати это пытается загрузить /etc/nginx/html/index.html?
Править: Так, я получил контейнерный идентификатор через docker ps
и зарегистрированный на пути docker exec -ti %id% sh
. Попытка проверить с помощью ping-запросов повысилась:
/ # ping rose
PING rose (172.19.0.11): 56 data bytes
64 bytes from 172.19.0.11: seq=0 ttl=64 time=0.083 ms
64 bytes from 172.19.0.11: seq=1 ttl=64 time=0.116 ms
Попытка проверить с помощью ping-запросов localhost с портом 1337 года:
/ # ping localhost:1337
PING localhost:1337 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.080 ms
Благодарен за то, что Thomas продвигает к irc каналу, парни там дали мне корректную подсказку. Проблема была с
location ~ ^/(.*)/ {
Было достаточно упростить его до
location ~ / {
Теперь это работает!