Я использую 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;
}
}