jwilder / nginx разрешение 403 запрещено - PullRequest
0 голосов
/ 15 февраля 2020

Я пытаюсь обслуживать несколько контейнеров с индексом stati c. html файл с nginx обратным прокси

Я пытался следовать документации здесь для создания местоположения по умолчанию

location / {
  root   /app;
  index  index.html;
  try_files $uri $uri/ /index.html;
}

Если я проверю свой default.conf в своем контейнере с помощью

$ docker-compose exec nginx-proxy cat /etc/nginx/conf.d/default.conf

, я получу такой результат:

server {
        server_name _; # This is just an invalid value which will never trigger on a real hostname.
        listen 80;
        access_log /var/log/nginx/access.log vhost;
        return 503;
}
# xx.example.services
upstream xx.example.services {
                                ## Can be connected with "nginx-proxy" network
                        # examplecontainer1
                        server 172.18.0.4:80;
}
server {
        server_name xx.example.services;
        listen 80 ;
        access_log /var/log/nginx/access.log vhost;
        location / {
                proxy_pass http://xx.example.services;
                include /etc/nginx/vhost.d/default_location;
        }
}
# yy.example.services
upstream yy.example.services {
                                ## Can be connected with "nginx-proxy" network
                        # examplecontainer2
                        server 172.18.0.2:80;
}
server {
        server_name yy.example.services;
        listen 80 ;
        access_log /var/log/nginx/access.log vhost;
        location / {
                proxy_pass http://yy.example.services;
                include /etc/nginx/vhost.d/default_location;
        }
}

Если я проверяю содержимое /etc/nginx/vhost.d/default_location, это именно то, что я набрал в начале, так что все нормально

Однако, когда я go на xx.example.services, я получаю 403 запрещено.

Насколько я понимаю, это означает, что файл index. html не был найден, но если я ввожу c в мой контейнер и приложение / индекс cat. html он существует!

Я проверил, что все мои контейнеры находятся в одной сети.

Я запускаю свой контейнер с этой командой

docker run -d --name examplecontainer1 --expose 80 --net nginx-proxy -e VIRTUAL_HOST=xx.example.services my-container-registry

Обновление Я проверил журналы моего nginx -прокси-контейнера и обнаружил это сообщение об ошибке:

[ошибка] 29 # 29: * 1 индекс каталога "/ app /" i s запрещено ..

Попытка удаления $ uri / согласно этой SO-записи , но это только оставило меня с циклами перенаправления. Сейчас я пытаюсь выяснить, могу ли я установить правильные разрешения, но я изо всех сил

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Моей проблемой было базовое c неправильное понимание того, что обратный прокси-сервер может проникать в файловую систему моих контейнеров, как заявил сам jwilder здесь .

Таким образом, расположение по умолчанию на обратной стороне прокси не нужен в моем случае. Вместо этого я могу просто позволить ему указывать на мой контейнер, и конфигурация nginx в моем контейнере определяет местоположение моего приложения.

0 голосов
/ 15 февраля 2020

Привет, это просто, ваши контейнеры отсутствуют /app/index.html внутри них

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...