Dockerized обратный прокси nginx между контейнерами в одной сети? - PullRequest
0 голосов
/ 23 сентября 2019

Я использую 2 стека докеров, которые идентичны, за исключением порта и файла php в корне, который просто говорит, какой это сервер.Стеки имеют nginx и php, и они могут загружать сайт с помощью «site1: 8080 / php.php» и «site2: 8090 / php.php»

Это мой файл / etc / hosts на хостеmachine

127.0.0.1 site1
127.0.0.1 site2

Они работают на моем компьютере (настроен один узел), поэтому я хочу поменять прокси между ними, чтобы пользователю было нужно только ввести "site1" или "site2" для доступа к php.phpфайл.Это составной файл Docker для «site1»:

version: '3'

services:
  web:
      image: nginx:latest
      deploy:
       replicas: 1
      ports:
          - "8080:80"
      volumes:
          - "./code:/code"
          - "./site.conf:/etc/nginx/conf.d/site.conf"
      links:
          - php
  php:
      image: php:7-fpm
      deploy:
        replicas: 1
      volumes:
          - "./code:/code"

, а для «site2» только порт был изменен на 8090.

Для site.conf это:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    index index.php index.html;
    server_name site1;

    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /code;

    location / {
        try_files $uri $uri/ =404;
    }

    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;
    }
}

Я установил nginx для обратного прокси-сервера, а также создал сеть докеров под названием "proxy" и добавил к ней 3 nginx.

docker service create --name=reverse-proxy --publish=80:80/tcp nginx:latest

Я вошел в контейнер и перепробовал все эти конфигурации.в сайтах с поддержкой и большим количеством вариаций ничего не получалось:

#upstream site1 {
# server        site1:80;
#}

#server {
#  listen        80;
#  server_name   site1;

#  location / {
#    proxy_pass  http://site1:8080/php.php;
#  }
#}


#server {
#    listen 80;
#    server_name site1;

#    location / {
#        proxy_pass http://172.19.0.3:80/php.php;
#        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;
#    }
#}


server {
listen 80;
listen [::]:80;

server_name site1;

location / {
proxy_pass http://172.19.0.3:80;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
}
}

...