我正在尝试使用一堆webapps设置一个家庭服务器。现在,我专注于seafile和静态html页面。服务器使用Docker和Nginx。 我想实现以下行为:
domain-name.eu
重定向到静态页面,说“欢迎使用域名”。 seafile.domain-name.eu
重定向到seafile容器。我在网上关于如何设置docker-compose.yml以及nginx conf以允许nginx为不同的网站提供服务的各种教程。我设法让我的seafile在正确的地址上独自在nginx后面工作,我设法在正确的地址上单独使用静态页面在nginx后面。当我尝试混合使用时,domain-name.eu
和seafile.domain-name.eu
都会提供静态页面“欢迎使用域名”。
这是我的docker-compose.yml
:
nginx:
image: nginx
ports:
- 80:80
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./html/:/usr/share/nginx/html
links:
- seafile
seafile:
image: seafileltd/seafile:latest
expose:
- 80
volumes:
- /home/docker/seafile-data:/shared
我的nginx.conf
:
http {
upstream seafile {
server seafile;
}
server {
listen 80;
server_name seafile.domain-name.eu;
location /{
proxy_pass http://seafile/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
}
server {
listen 80;
server_name domain-name.eu;
root /usr/share/nginx/html;
index index.html index.htm;
}
}
events {}
当我尝试访问seafile.domain-name.eu
时,我从nginx容器中收到此日志:
nginx_1 | xxx.xxx.xxx.xxx - - [05/Jun/2018:09:44:24 +0000] "GET / HTTP/1.1" 200 22 "http://seafile.domain-name.eu/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
当我尝试访问domain-name.eu
时,我会收到:
nginx_1 | xxx.xxx.xxx.xxx - - [05/Jun/2018:10:07:11 +0000] "GET / HTTP/1.1" 200 22 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
因此地址确实被识别为seafile,这有助于我消除DNS的错误配置作为可能的原因。或者我错了?
任何人都可以帮我解决问题吗? 谢谢。
编辑:添加docker ps
输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6d018169d76 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:80->80/tcp jarvis-compose_nginx_1
7e701ce7650d seafileltd/seafile:latest "/sbin/my_init -- /s…" About an hour ago Up About an hour 80/tcp jarvis-compose_seafile_1
编辑2:问题是由于配置错误(请参阅接受的答案)+来自旧注册商的剩余重定向导致了奇怪的行为。谢谢您的帮助!
答案 0 :(得分:0)
尝试在我的本地运行。发现您在容器中安装了错误的nginx配置文件。 nginx.conf
应安装在/etc/nginx/conf.d/default.conf
上,它是支持nginx上的vhost的默认配置。以下是正确的设置:
<强> nginx.conf 强>
upstream seafile {
server seafile;
}
server {
listen 80;
server_name seafile.domain-name.eu;
location /{
proxy_pass http://seafile/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
}
server {
listen 80;
server_name domain-name.eu;
root /usr/share/nginx/html;
index index.html index.htm;
}
<强>搬运工-compose.yml 强>
version: '3'
services:
nginx:
image: nginx
ports:
- 80:80
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./html/:/usr/share/nginx/html
links:
- seafile
container_name: web
seafile:
image: seafileltd/seafile:latest
expose:
- 80
volumes:
- /home/docker/seafile-data:/shared
container_name: seafile_server