HenryQW / Awesome-TTRSS

🐋 Awesome TTRSS, a powerful Dockerised all-in-one RSS solution.
http://ttrss.henry.wang
MIT License
2.44k stars 493 forks source link

[BUG]Nginx 通过网站子目录进行反向代理无法访问链接 #231

Closed nerdbugg closed 3 years ago

nerdbugg commented 3 years ago

Bug 描述 Nginx 通过网站子目录进行反向代理,点击文章链接转向http://ip/backend.php 显示405 Not Allowed

你谷歌/百度了吗? 使用谷歌未找到相关资料

部署方法

部署环境

复现步骤 复现该 bug 的详细步骤

  1. 按照文档中使用子目录反向代理的方法配置nginx,设置rewrite, proxy_redirect, proxy_pass,参考#135
  2. 设置SELF_URL_PATH=http://ip/ (设置为“http://ip/ttrss/”启动失败
  3. 点击文章,跳转至"http://ip/backend.php" 并显示405 Not Allowed

预期结果 点击文章应跳转至相应文章链接。

截屏 如果可以提供截屏将有助于 bug 修复。

错误日志 当错误发生时,通过终端执行 docker logs ttrss --tail 100 获取日志,并将相关错误日志粘贴于此处。

其他 nginx配置

location /ttrss/ {
                        rewrite ^/ttrss/(.*)$ /$1 break;
                        proxy_redirect http://$http_host http://$http_host/ttrss;
                        proxy_pass http://localhost:181;

                        proxy_set_header  Host                $http_host;
                        proxy_set_header  X-Real-IP           $remote_addr;
                        proxy_set_header  X-Forwarded-Ssl     on;
                        proxy_set_header  X-Forwarded-For     $proxy_add_x_forwarded_for;
                        proxy_set_header  X-Forwarded-Proto   $scheme;
                        proxy_set_header  X-Frame-Options     SAMEORIGIN;

                        client_max_body_size        100m;
                        client_body_buffer_size     128k;

                        proxy_buffer_size           4k;
                        proxy_buffers               4 32k;
                        proxy_busy_buffers_size     64k;
                        proxy_temp_file_write_size  64k;
 }

docker-compose.yml

version: "3"
services:
  service.rss:
    image: wangqiru/ttrss:latest
    container_name: ttrss
    ports:
      - 181:80
    environment:
      - SELF_URL_PATH=http://ip/ # please change to your own domain
HenryQW commented 3 years ago

麻烦从文档复制粘贴相关配置。

nerdbugg commented 3 years ago

使用的配置与文档基本一致,只有ip不同,nginx配置里rewrite部分用的是http,SELF_URL_PATH也是根据出错信息配置的。想求助下这个问题该怎么解决,或者可以从哪里开始排查。

HenryQW commented 3 years ago

说实话我从来没用过 subdirectory,所以我也没有解决这个问题的经验。TTRSS 对 subdirectory 的支持也很辣鸡。

对比一下你的nginx

rewrite ^/ttrss/(.*)$ /$1 break;

和文档

rewrite /ttrss/(.*) /$1 break;

这个是大家在 #135 摸索出的可行配置,我不是这块的专家,你的改动我不知道会造成什么影响。但是 regex 看来 ^=开头 $=结尾,这个matching应该不能正常rewrite

目标是把 domain.com/ttrss/backend.php rewrite 至 domain.com/backend.php^导致无法match。

neo1104 commented 3 years ago

我目前也碰到了一样的问题,使用标准配置在打开新文章的时候仍然会出现404,不知道这个问题后来是否有解决?