我使用的是一个使用docker的Synology nas,我使用nginx和php。 如果我用它的端口号连接到我的网站,我可以连接到我的网站, 但我想要的是不要使用端口号从外面到达它。
所以我的问题是如何在没有端口号的情况下连接到它,或者如何托管我的网站以便将其连接到www.mydomain.com?
本地网络 - 10.0.1.15:8080(作品)
公共网络 xxx.xxx.xxx:8080(工程)
配置文件:
server {
listen 80 default_server;
root /var/www/html/public;
index index.html index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/error.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php$ {
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_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /\.ht {
deny all;
}
}
搬运工-compose.yml
nginx:
build: ./nginx/
ports:
- 8080:80
links:
- php
volumes_from:
- app
php:
build: ./php/
expose:
- 9000
links:
- mysql
volumes_from:
- app
composer:
image: composer/composer
volumes_from:
- app
app:
image: php:7.0-fpm
volumes:
- .:/var/www/html
command: "true"
mysql:
image: mysql:latest
volumes_from:
- data
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: dbname
MYSQL_USER: username
MYSQL_PASSWORD: password
data:
image: mysql:latest
volumes:
- /var/lib/mysql
command: "true"
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- 8888:80
links:
- mysql
environment:
PMA_HOST: mysql
答案 0 :(得分:0)
您正在Docker主机上的端口nginx
上发布8080
。您应该在端口80
上发布它,如果它尚未被打开yourdomain.com
,默认为80
上的http
端口。
另一种选择是在端口nginx
和80
上运行另一个reverse proxy
容器,通过http标头在不同端口上的不同容器上运行。这种方法允许您在端口80
或443
上托管多个网站,在Docker主机上的不同容器中。
示例nginx配置:
server {
listen 80;
server_name somename1.yourdomain.com;
location / {
proxy_pass http://nginxContainerName:8080;
}
server {
listen 80;
server_name somename2.yourdomain.com;
location / {
proxy_pass http://synologysContainerName:8081;
}
server {
listen 80;
server_name somename3.yourdomain.com;
location / {
proxy_pass http://phpmyadminContainername:8888;
}
}
确保您已创建用户定义的网络:
docker network create mynetwork
然后将所有容器放入其中。