@VadimFox

Как грамотно настроить обратное прокси nginx — docker nginx?

Есть сервер, стоит nginx для распределения запросов, также есть два контейнера, один из них должен принимать запросы ex1.example.com, второй ex2.example.com (на основной сайт) и ap.ex2.example.com (админка сайта).
Имеющийся конфиг (для одного из контейнеров):


Внешний nginx

server {
        listen 80;
        server_name ex1.example.com;
        return 301 https://$host$request_uri;
}
server {
        listen 443;
        server_name ex1.example.com;
        ssl_certificate           /etc/letsencrypt/live/ex1.example.com/fullchain.pem;
        ssl_certificate_key       /etc/letsencrypt/live/ex1.example.com/privkey.pem;
        ssl on;
        ssl_session_cache  builtin:1000  shared:SSL:10m;
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        ssl_prefer_server_ciphers on;
        access_log            /var/log/nginx/ex1.access.log;
        location / {
                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 $scheme;

                proxy_pass          http://ex1.example.loc:8081;
                proxy_read_timeout  90;
        }
}



docker nginx

server {
    charset utf-8;
    index index.php;
    listen 80;
    server_name ex1.example.loc;
    error_log  /var/log/nginx/ex1.example.loc/error.log;
    access_log /var/log/nginx/ex1.example.loc/access.log;
    root /var/www/ex1.example.loc;

    location / {
        if (!-e $request_filename){
           rewrite ^(.*)$ /index.php;
        }
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}



и в хост сервера добавил
127.0.0.1 ex1.example.loc
Зачем? Незнаю, мне кажеться так проще)



В итоге получаю 502 =(
Подскажите пожалуйста в чем проблема или в какую сторону глядеть
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
@VadimFox Автор вопроса
Все оказалось гораздо проще, конфиг nginx был назван ex2.example.com, автоматом он его конечно же не подхватывал, переименовал в default.conf и все полетело...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Inlore
@Inlore
А nginx контейнера точно слушает 8081 на 127.0.0.1 хоста (запаблишен или использует сеть хоста)?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы