gpt4 book ai didi

apache - Docker 在子域上运行

转载 作者:可可西里 更新时间:2023-11-01 16:32:57 28 4
gpt4 key购买 nike

我的目标是部署多个 webapps 并通过子域访问它们,我目前在不同的端口上运行它们,我在服务器上有 nginx 并且容器正在运行 apache。

docker run -p 8001:80 -d apache-test1
docker run -p 8002:80 -d apache-test2

我可以访问它们

http://example.com:8001

或者 http://example.com:8002

但我喜欢通过子域访问它们

http://example.com:8001 -> http://test1.example.com
http://example.com:8002 -> http://test2.example.com

我在服务器上运行了 nginx,服务器设置如下

server {
server_name test1.anomamedia.com;
location / {
proxy_redirect off;
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_pass http://localhost:8001;
}
}

server {
server_name test2.anomamedia.com;
location / {
proxy_redirect off;
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_pass http://localhost:8002;
}
}

如果有任何帮助,这是我的 Dockerfile

FROM ubuntu

RUN apt-get update
RUN apt-get -y upgrade

RUN sudo apt-get -y install apache2 php5 libapache2-mod-php5

# Install apache, PHP, and supplimentary programs. curl and lynx-cur are for debugging the container.
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install apache2 libapache2-mod-php5 php5-mysql php5-gd php-pear php-apc php5-curl curl lynx-cur

# Enable apache mods.
RUN a2enmod php5
RUN a2enmod rewrite

EXPOSE 80

# Copy site into place.
ADD html /var/www/html

# Update the default apache site with the config we created.
ADD apache-config.conf /etc/apache2/sites-enabled/000-default.conf

# By default, simply start apache.
CMD /usr/sbin/apache2ctl -D FOREGROUND

最佳答案

我也有类似的问题。另外我经常需要添加和删除容器,所以我不想每次都编辑 nginx conf。我的解决方案是使用 jwilder/nginx-proxy。

然后你只需启动带有暴露端口的容器(--expose 80,而不是-p 80:80)并添加环境变量:

-e VIRTUAL_HOST=foo.bar.com

不要忘记使用正确的 header 传输您的主要 nginx 流量:

server {
listen 80;# default_server;
#send all subdomains to nginx-proxy
server_name *.bar.com;

#proxy to docker nginx reverse proxy
location / {
proxy_set_header X-Real-IP $remote_addr; #for some reason nginx
proxy_set_header Host $http_host; #doesn't pass these by default
proxy_pass http://127.0.0.1:5100;
}

}

关于apache - Docker 在子域上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33586062/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com