如何调试本地主机重定向问题?

如何调试本地主机重定向问题?

我试图弄清楚为什么当我192.168.x.x从另一台电脑访问我的本地 IP()时没有重定向到localhost我的电脑。

我的配置是这样的:

我的服务器上有一个虚拟机管理程序。在虚拟机管理程序上,我有一个装有 Ubuntu Server 18 的虚拟机。在 Ubuntu 中,我安装了一个 Docker 容器,其中包含ERPNext 应用程序。该应用程序在主机 VM 上可用http://localhost,但当我想访问 VM 的本地 IP(从另一台机器)时,我得到了一个404 page not found。如果容器关闭,我会得到一个错误页面:this site can't be reached

欲了解更多信息,我还可以在ERPNext 讨论论坛

答案1

似乎 ERPNext 的某个人已经在 ERPNext 讨论论坛上回答了这个问题。我将把解决方案复制到这里以供将来参考。

  1. 将以下标签添加到erpnext-nginx服务
      - "traefik.http.routers.erpnext-nginx.rule=HostRegexp(`{catchall:.*}`)"
      - "traefik.http.middlewares.erpnext-nginx.headers.customrequestheaders.Host=erpnext-nginx"
      - "traefik.http.routers.erpnext-nginx.middlewares=erpnext-nginx"

获取服务的以下配置:

  erpnext-nginx:
    image: frappe/erpnext-nginx:${ERPNEXT_VERSION}
    restart: on-failure
    environment:
      - FRAPPE_PY=erpnext-python
      - FRAPPE_PY_PORT=8000
      - FRAPPE_SOCKETIO=frappe-socketio
      - SOCKETIO_PORT=9000
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.erpnext-nginx.rule=Host(${SITES})"
      - "${ENTRYPOINT_LABEL}"
      - "${CERT_RESOLVER_LABEL}"
      - "traefik.http.services.erpnext-nginx.loadbalancer.server.port=80"
      - "traefik.http.routers.erpnext-nginx.rule=HostRegexp(`{catchall:.*}`)"
      - "traefik.http.middlewares.erpnext-nginx.headers.customrequestheaders.Host=erpnext-nginx"
      - "traefik.http.routers.erpnext-nginx.middlewares=erpnext-nginx"
    volumes:
      - sites-vol:/var/www/html/sites:rw
      - assets-vol:/assets:rw
  1. 复制env-local.env并更改mysite.localhosterpnext-nginx
cp env-local .env

# change mysite.localhost to erpnext-nginx
sed -i -e "s/mysite.localhost/erpnext-nginx/g" .env

注意:建议使用精确版本(如 frappe v12.9.1 和 erpnext v12.11.2),而不是 edge 或 v12 标签

  1. 添加文件sites/currentsite.txt,例如在容器中执行
echo erpnext-nginx > currentsite.txt

参考这里

  • 此配置为部署设置了默认站点。
  • traefik 标签:这些标签告诉所有传入请求反向代理到erpnext-nginx容器,并将 Host 标头设置为erpnext-nginx
  • erpnext-nginx容器获取主机标头,erpnext-nginx无论请求中输入任何站点,并提供中提到的站点currentsite.txterpnext-nginx

相关内容