【发布时间】:2023-03-19 00:40:01
【问题描述】:
我一直在研究 Docker,以及如何“以 Docker 方式”在服务器上托管多个网站。据我了解,理想情况下,一切都应该运行自己的容器,并且这些容器不应该被共享。
我的问题是下面的概述是否是一个有效的容器设置,请求进入单个反向代理,该反向代理将请求中继到底层网络服务器以处理实际请求。
此外,在以下三种情况下,我详细介绍了包含应用程序源文件的不同方法,并且想知道这三种情况中哪一种最常用/最好用。
我的愿望是能够在 Docker 中的单个服务器上运行不同的网站。网站可以有不同的要求,如图中不同的 PHP-FPM 版本所示。网站本身的部署对我来说有点不清楚,因为我不确定是否应该将源文件包含在 nginx / PHP-FPM 中或单独部署。
我目前的设置如下:
docker-compose.yml
version: '2'
services:
nginx:
image: nginx:alpine
restart: always
ports:
- '80:80'
links:
- example_com
- example_org
- example_net
volumes:
- ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro
example_com:
image: php:7.0-fpm-alpine
restart: always
volumes:
- ./sites/example_com:/var/www/example_com:ro
example_org:
image: php:7.0-fpm-alpine
restart: always
volumes:
- ./sites/example_org:/var/www/example_org:ro
example_net:
image: php:7.0-fpm-alpine
restart: always
volumes:
- ./sites/example_net:/var/www/example_net
nginx/conf.d/default.conf
server {
listen 80;
server_name www.example.com example.com;
location ~ \.php$ {
fastcgi_pass example_com:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/example_com$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
server_name www.example.org example.org;
location ~ \.php$ {
fastcgi_pass example_org:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/example_org$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
server_name www.example.net example.net;
location ~ \.php$ {
fastcgi_pass example_net:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/example_net$fastcgi_script_name;
include fastcgi_params;
}
}
这与上面的概述不同,但概述中的情况对我来说似乎是理想的情况。
如何使用反向代理和不同的 PHP-FPM 容器进行设置,以及如何部署我的网站及其后续更新?
对此的任何意见将不胜感激!
【问题讨论】:
-
我认为“小艇”是可能对此有用的反向代理
标签: php nginx docker proxy architecture