我创建了一个docker-compose文件来旋转nginx和tomcat图像。我使用大量的文件,例如/etc/nginx/nginx.conf和/etc/nginx/conf.d/app.conf 与Tomcat相同,但具有xml配置文件和webapps。
两者都旋转起来并运行良好……靠自己。我可以浏览到Nginx并在其各自的端口81/8080上获得welcom页面和Tomcat的页面。
但是我无法将请求代理到后端tomcat。我承认,我是Apache,已经工作了多年,但我需要尝试一下。
我的nginx.conf尚未更改,仍为默认值。我有一个tomcat应用程序的app.conf(如下)。我确实尝试过将CMD转换为tomcat Dockerfile中的default.conf,但是它仍然保留在我的app.conf旁边,这样可能会引起问题? 我的app.conf配置在这里:(抱歉,无法正确输出代码)
"server {
listen *:81;
set $allowOriginSite *;
proxy_pass_request_headers on;
proxy_pass_header Set-Cookie;
access_log /var/log/nginx/access.log combined;
error_log /var/log/nginx/error.log error;
# Upload size unlimited
client_max_body_size 0;
location /evf {
proxy_pass http://tomcat:8080;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering 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_header Set-Cookie;
}
}
tomcat:8080是我的docker-compose文件中的服务名称。 任何帮助将不胜感激!
谢谢你, 克雷格
docker-compose.yml供参考; 版本:“ 3”
services:
nginx:
build: ./nginx
image: nginx:evf
command: nginx -g "daemon off;"
networks:
- evf
container_name: evf-nginx
volumes:
- ./volumes/config/nginx-evf.conf:/etc/nginx/conf.d/nginx-evf.conf
- ./volumes/config/default.conf.disabled:/etc/nginx/conf.d/default.conf.disabled
ports:
- "81:80"
tomcat:
image: tomcat
working_dir: /usr/local/tomcat
volumes:
- ./volumes/config/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml
- ./volumes/webapps/EVF.war:/usr/local/tomcat/webapps/EVF.war
networks:
- evf
container_name: evf-tomcat
ports:
- "8080:8080" #expose 8080 externally to test connectivity.
networks:
evf:
谢谢
答案 0 :(得分:0)
在您的nginx conf中,您拥有listen *:81
,但是您正在使用80
公开端口"81:80"
。
因此,可以使用81
公开端口"81:81"
或将nginx配置更改为listen *:80
。
如果第二个选项不起作用,请尝试通过更改docker-compose.yml
中的卷文件来替换原始的nginx配置:
volumes:
- ./nginx/nginx-evf.conf:/etc/nginx/conf.d/default.conf