Dockerized jira 7.3.5 与 nginx 反向代理基本 URL 问题

Dockerized jira 7.3.5 与 nginx 反向代理基本 URL 问题

当我尝试在本地网络上使用 nginx 反向代理配置 Jira 7.3.5 时,我遇到了一个小问题。我将 cptactionhank jira docker 镜像与 jwilder nginx-proxy docker 镜像一起使用。一切似乎都运行良好,但自从我更新到版本 7.3.5 以来,Jira 报告了“小工具的基本 URL”问题。打开 Jira 配置面板的支持工具部分时,它显示“JIRA 无法通过配置的基本 URL 访问自身”。结果是仪表板上的小工具没有报告其正确的名称。

这似乎与将流量通过端口 8080 重新路由到端口 80 有关。当我将 Jira 中的基本 URL 设置为端口 8080 时,问题就消失了,但不幸的是,我的所有 jira URL 都将以端口 8080 为后缀。我尝试将 X_PROXY_PORT 设置为 80,并尝试在我的 docker-compose 环境中设置 VIRTUAL_PORT,但这些似乎都没有太大变化。我希望这里有人有这种设置的经验?

这是我的 jira docker-compose.yml 文件:

version: '2'

services:
  jira:
    container_name: jira
    restart: always
    image: cptactionhank/atlassian-jira-software:latest
    ports:
    - "8080:8080"
    volumes:
    - jira-data:/var/atlassian/jira
    - jira-logs-data:/opt/atlassian/jira/logs
    dns: 192.168.2.4
    expose:
    - "8080"
    hostname: jira.internal.mydomain.com
    network_mode: bridge
    environment:
    - VIRTUAL_HOST=jira.internal.mydomain.com

volumes:
  jira-data:
    external: true
  jira-logs-data:
    external: true

这是我的 nginx docker-compose.yml 文件

version: '2'

services:
  nginx:
    container_name: nginx
    restart: always
    image: jwilder/nginx-proxy
    ports:
    - "80:80"
    volumes:
    - /var/run/docker.sock:/tmp/docker.sock:ro
    - /srv/nginx-proxy/my_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro
    dns: 192.168.2.4
    network_mode: bridge

答案1

那么,您让 jira 监听端口 8080,并让 nginx 将端口 80 路由到 8080?对吗?

听起来 jira 没有使用代理与自己通信。我猜这是因为它尝试了错误的 IP 地址,而代理没有监听该地址。这很容易用“ss -tln”或“netstat -tln”检查

希望这能有所帮助 -Dylan

更新:

嗯,看起来好像您在端口 8080 和端口 8005 上都监听了一些东西,但没有监听端口 80。这让我觉得 nginx 配置不正确。或者,您是否在容器外将端口 8005 发布为端口 80?这会导致问题,因为在容器内部,端口 80 什么都不是。我认为您可以在容器中的 iptables 中设置一个简单的转发规则,以将端口 80 本地重定向到端口 8005。这可能会解决问题。或者只需将 nginx 放在端口 80 上并将其发布为端口 80。

答案2

我似乎找到了这个问题的解决方案。禁用 jira docker-compose 文件中的“expose: "8080"”和“hostname: jira.internal.mydomain.com”行似乎可以确保所有路由都按原样完成。我设置了 jira 基本网址只是为了http://jira.internal.mydomain.com一切似乎都正常。

相关内容