docker - Tomcat 的 Nginx Rverse 代理(简单的是……?否)

标签 docker tomcat nginx

我创建了一个 docker-compose 文件来启动 nginx 和 tomcat 镜像。我使用大量文件,例如/etc/nginx/nginx.conf 和/etc/nginx/conf.d/app.conf 与 Tomcat 相同,但使用 xml 配置文件和 webapps。

两者都启动并运行良好……它们自己。我可以浏览到 Nginx 并在各自的端口 81/8080 上获取欢迎页面以及 Tomcat 的欢迎页面。

但是我无法将请求代理到后端 tomcat。我承认,我是 Apache 多年,但我需要试验。

我的 nginx.conf 没有改变,它仍然是默认的。我有一个用于 tomcat 应用程序的 app.conf(如下)。我确实尝试在 teh tomcat Dockerfile 中使用 CMD mv 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:

谢谢,

最佳答案

在您的 nginx conf 中,您有 listen *:81 但您正在使用 "81:80" 公开端口 80

因此,要么使用"81:81" 公开端口81,要么将您的nginx 配置更改为listen *:80

如果第二个选项不起作用,请尝试通过更改 docker-compose.yml 中的卷文件来替换原始的 nginx 配置:

volumes:
  - ./nginx/nginx-evf.conf:/etc/nginx/conf.d/default.conf

关于docker - Tomcat 的 Nginx Rverse 代理(简单的是……?否),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55281577/

相关文章:

tomcat - 如何在tomcat上拥有同一个servlet的多个实例

java - 使用JDK 7编译Java 6源文件 : pros and cons

nginx - 如何使用Nginx捕获组将前缀附加到重写规则

docker - 在 docker 镜像中编译时的 mtune 和 march

python - Docker 撰写 : Allowing Network Interactions Between Services

macos - Boot2docker 虚拟机图形

docker - 为 docker run 配置选项

tomcat - 通过身份验证转发到另一个 webapp

nginx - 高负载下502网关错误(nginx/php-fpm)

php - 404 未找到 nginx/1.10.3 (Ubuntu)