首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何配置Nginx代理管理器来代理OnlyOffice文档服务器Docker容器?

如何配置Nginx代理管理器来代理OnlyOffice文档服务器Docker容器?
EN

Stack Overflow用户
提问于 2021-10-22 04:16:50
回答 1查看 1.6K关注 0票数 0

我花了令人尴尬的时间试图解决这个问题。我正在运行Nginx Proxy Manager,直到10月初还没有遇到任何问题。在此之前,我一直使用代理到OnlyOffice的Nginx Proxy Manager中的默认设置。我正在使用通配符SSL证书,让我们通过DigitalOcean使用DNS挑战进行加密。

这是我的OnlyOffice文档服务器的docker-compose.yml:

代码语言:javascript
运行
复制
# ------------------------------------------------------------------------------
# OnlyOffice
#
# use port 80 with Nginx Proxy Manager
# ------------------------------------------------------------------------------
version: "3"
services:
  onlyoffice:
    container_name: onlyoffice
    domainname: mydomain.tdl
    environment:
      - JWT_ENABLED=true
      - JWT_SECRET=anAmazingSecretThatWillBlowYourMind
      - WOPI_ENABLED=true
    hostname: onlyoffice
    image: onlyoffice/documentserver
    networks:
      proxy_network:
        aliases:
          - onlyoffice
    restart: unless-stopped
    volumes:
      - ./config/onlyoffice/app:/var/lib/onlyoffice
      - ./config/onlyoffice/data:/var/www/onlyoffice/Data
      - ./config/onlyoffice/fonts:/usr/share/fonts/truetype/custom
      - ./config/onlyoffice/log:/var/log/onlyoffice
      - ./config/onlyoffice/postgresql:/var/lib/postgresql
      - ./config/onlyoffice/rabbitmq:/var/lib/rabbitmq
      - ./config/onlyoffice/redis:/var/lib/redis
networks:
  proxy_network:
    external: true

这是我的Nginx Proxy Manager docker-compose.yml文件:

代码语言:javascript
运行
复制
# ------------------------------------------------------------------------------
# Nginx Proxy Manager
#
# use port 81 with Nginx Proxy Manager
# ------------------------------------------------------------------------------
version: "3"
services:
  nginxproxymanager:
    container_name: nginxproxymanager_app
    depends_on:
      - mariadb-aria
    domainname: mydomain.tdl
    environment:
      - DB_MYSQL_HOST=nginxproxymanager_db
      - DB_MYSQL_PORT=3306
      - DB_MYSQL_USER=nginxproxymanager_user
      - DB_MYSQL_PASSWORD=TheMostSecurePas5w0rd
      - DB_MYSQL_NAME=nginxproxymanager_db
      - DISABLE_IPV6=true
    hostname: nginxproxymanager_app
    image: jc21/nginx-proxy-manager
    networks:
      default:
        aliases:
          - nginxproxymanager_app
      macvlan_network:
        aliases:
          - nginxproxymanager
        ipv4_address: www.xxx.yyy.zzz
      proxy_network:
        aliases:
          - nginxproxymanager
    restart: unless-stopped
    volumes:
      - ./config/data:/data
      - ./config/letsencrypt:/etc/letsencrypt
  mariadb-aria:
    container_name: nginxproxymanager_db
    domainname: mydomain.tdl
    environment:
      - MYSQL_ROOT_PASSWORD=EvenM0reSecurePas5w0rd
      - MYSQL_DATABASE=nginxproxymanager_db
      - MYSQL_USER=nginxproxymanager_user
      - MYSQL_PASSWORD=TheMostSecurePas5w0rd
    hostname: nginxproxymanager_db
    image: jc21/mariadb-aria
    networks:
      default:
        aliases:
          - nginxproxymanager_db
    restart: unless-stopped
    volumes:
      - /cache/nginxproxymanager/mariadb-aria:/var/lib/mysql
networks:
  default:
  macvlan_network:
    external: true
  proxy_network:
    external: true

这是默认的Nginx代理管理器配置文件,它是使用我一直使用的设置生成的:

代码语言:javascript
运行
复制
# ------------------------------------------------------------
# onlyoffice.mydomain.tdl
# ------------------------------------------------------------


server
{
  set $forward_scheme http;
  set $server "onlyoffice";
  set $port 80;

  listen 80;
  #listen [::]:80;

  listen 443 ssl http2;
  #listen [::]:443;


  server_name onlyoffice.mydomain.tdl;


  # Let's Encrypt SSL
  include conf.d/include/letsencrypt-acme-challenge.conf;
  include conf.d/include/ssl-ciphers.conf;
  ssl_certificate /etc/letsencrypt/live/npm-4/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/npm-4/privkey.pem;


  # Asset Caching
  include conf.d/include/assets.conf;


  # Block Exploits
  include conf.d/include/block-exploits.conf;


  # HSTS (ngx_http_headers_module is required) (63072000 seconds = 2 years)
  add_header Strict-Transport-Security "max-age=63072000;includeSubDomains; preload" always;


  # Force SSL
  include conf.d/include/force-ssl.conf;


  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection $http_connection;
  proxy_http_version 1.1;


  access_log /data/logs/proxy-host-44_access.log proxy;
  error_log /data/logs/proxy-host-44_error.log warn;


  location /
  {


    # HSTS (ngx_http_headers_module is required) (63072000 seconds = 2 years)
    add_header Strict-Transport-Security "max-age=63072000;includeSubDomains; preload" always;


    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_http_version 1.1;


    # Proxy!
    include conf.d/include/proxy.conf;
  }


  # Custom
  include /data/nginx/custom/server_proxy[.]conf;
}

如果我在Nginx Proxy Manager中删除OnlyOffice的代理主机条目中的SSL证书,它可以正常工作。我已经观看了Spaceinvader One的YouTube视频,以及其他关于这个话题的视频,但是我还没能解决这个问题。我已经添加了我遇到的每个附加参数,包括Spaceinvader One在他的示例Nginx配置中使用的那些参数,我能想到的所有组合。

当我试图访问Google Chrome中的示例编辑器时,我正在包含我当前收到的错误的屏幕截图。我得到这个错误,或者编辑器根本不加载。我在其他浏览器中也遇到过这些错误。

尝试在NextCloud中使用OnlyOffice连接器时,无法连接,并显示以下消息:

我希望有人能给我指出正确的方向或提供帮助,因为老实说,我不知道还能去哪里寻找,我在谷歌搜索的第4页和第5页上寻找答案。

我在一月份从使用linuxserver.ioSWAG container转到了Nginx Proxy Manager,因为我并不总是在身边,如果服务器有图形用户界面,当我不在的时候,告诉别人如何在服务器上做一些事情对我来说要容易得多。

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-11 04:56:44

在离开这个问题一段时间后,我今晚又回到了这个问题上。在更新了所有涉及的容器后,我在Nginx Proxy Manager Custom locations字段中添加了以下代码行:

代码语言:javascript
运行
复制
resolver 127.0.0.11 valid=30s;
proxy_redirect off;
proxy_set_header X-Forwarded-Host $server_name;

现在,一切似乎都在按预期进行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69671364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档