Docker搭建Onlyoffice并Nginx反代 作者: Hogwarts 发布于: 2023-06-21 更新于: 2023-06-23 分类: 默认分类 脑子抽抽,刚好些了。 #一、前提环境 - Docker、Nginx安装完毕。 - 已阅读[Docker搭建 Collabora Online 和 OnlyOffice](https://winamp.top/384.html "Docker搭建 Collabora Online 和 OnlyOffice") - 已阅读[Onlyoffice问题调试](https://winamp.top/388.html "Onlyoffice问题调试") #二、Onlyoffice运行 ##2.1 运行前提 - 证书、密钥已放入容器中 - 本例以8000映射80端口为例 ##2.2 运行命令 run -i -t -d -p 8000:80 --net=host --restart=always -e WOPI_ENABLED=true --name onlyooffice onlyoffice/documentserver ##2.3 测试XML响应 https://yourdomain.com:8000/hosting/discovery ##2.4 测试view.html 将`documentserver`改为`http://yourdomain.com:8000` 并拷贝到容器中,重启容器。 在浏览器无痕环境下测试效果 http://yourdomain.com:8000/web-apps/apps/view.html 注意存放的路径 ##2.5 修改local.json 将此文件从容器中拷贝出来,修改其中三项为false。 将修改后的local.json拷贝至容器中,并重启容器。 ##2.6 alist测试 在iframe中修改后测试效果。 #三、配置Nginx反代 upstream docservice { server 127.0.0.1:8000; } map $http_host $this_host { "" $host; default $http_host; } map $http_x_forwarded_proto $the_scheme { default $http_x_forwarded_proto; "" $scheme; } map $http_x_forwarded_host $the_host { default $http_x_forwarded_host; "" $this_host; } map $http_upgrade $proxy_connection { default upgrade; "" close; } proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $proxy_connection; proxy_set_header X-Forwarded-Host $the_host; proxy_set_header X-Forwarded-Proto $the_scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ## Normal HTTP host server { listen 0.0.0.0:80; listen [::]:80 default_server; server_name yourdomain.com; server_tokens off; ## Redirects all traffic to the HTTPS host return 301 https://$server_name:443$request_uri; } server { listen 0.0.0.0:443 ssl; listen [::]:443 ssl default_server; server_tokens off; root /usr/share/nginx/html; ssl_certificate /etc/ssl/pathto/fullchain.cer; ssl_certificate_key /etc/ssl/pathto/private.key; ssl_verify_client off; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_prefer_server_ciphers on; add_header X-Content-Type-Options nosniff; location / { proxy_pass http://127.0.0.1:8000; proxy_http_version 1.1; } } Nginx的反代是最头疼的~~,有时填写容器内部 IP 也不一定成功。可尝试改为127.0.0.1或localhost等测试。~~ 出现问题可能是与外部与容器的通信不畅。 经反复测试问题找到了 - 1、Nginx 删除defult.conf文件,将onlyoffice的conf监听的端口设为default_server。这样设置避免了好多问题。 - **2、推荐:运行 docker run 命令时,加入 `--net=host` 选项,这样容器和宿主机共用端口,Nginx反代时 127.0.0.1 能顺利的进行。** - 3、如果不加入 --net=host 选项,Nginx反代时就不能填写 127.0.0.1 了,填写容器运行的内部IP。运行下列命令查看,一般容器内部IP格式为:172.17.0.x。 docker exec -it 容器ID ip addr #四、反代测试 ##4.1 测试XML响应 https://yourdomain.com/hosting/discovery ##4.2 修改view.html并测试 将`documentserver`改为`https://yourdomain.com`(去掉端口号)并拷贝到容器中,并重启容器。 https://yourdomain.com/web-apps/apps/view.html ##4.3 查看local.json文件 检查修改的false是否有变动。 如有变动则修改,并重启容器。 ##4.4 修改alist 在iframe中去掉端口号后测试效果。 #五、alist使用onlyoffice文件编辑 请参考[Issues](https://github.com/alist-org/alist/discussions/3899 "Issues"),俺就不入坑了。 #六、世界清净了 标签: nginx, onlyoffice, alist