solo 页面无法正常加载

本贴最后更新于 191 天前,其中的信息可能已经沧海桑田

赞助商 我要投放

优质回帖
  • Leif160519 1
    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:8080;
    }
    

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    请详细描述一下搭建过程。

    4 回复
  • Rainsheep

    我的也是,昨天更新完以后,无法正常加载,皮肤消失,排版很乱,点不进去,nijigen 皮肤

  • Rainsheep

    docker 搭建的

  • Rainsheep

    docker run --detach --name solo --network=host
    --env RUNTIME_DB="MYSQL"
    --env JDBC_USERNAME="root"
    --env JDBC_PASSWORD="123456"
    --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver"
    --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"
    b3log/solo --listen_port=8080 --server_scheme=https --server_host=********** --server_port= --lute_http=http://127.0.0.1:8249

    1 回复
  • 88250

    打开 F12 看下网络请求,可能是静态资源加载有问题。

    1 回复
  • zer0da

    就是按那个安装教程写的,昨天还能用,今天就不行了。F12 显示是 common.min.js、manifest.json、base.css 报了 net::ERR_SSL_PROTOCOL_ERROR 错误

  • Rainsheep

    是静态资源问题 加载不了 怎么解决呢 docker 重新部署还是这样

  • 88250

    @Rainsheep @zer0da 麻烦发一下具体请求的链接,这样方便排查。

    2 回复
  • Rainsheep
  • zer0da
  • 88250

    @Rainsheep @zer0da 麻烦再次更新镜像重启观察

    2 回复
  • Rainsheep

    重启了 没啥用 还一样

  • zer0da

    我也是 是不是主题有问题

    1 回复
  • 88250

    你这边的启动参数贴一下。

    1 回复
  • Rainsheep

    你哪个主题? 应该不是主题问题吧 我看访问请求,访问的端口有问题 你使用 nginx 了吗

    1 回复
  • 88250

    不是主题的问题,看上去可能是 NGINX 配置有问题。确定一下是否加了这句:

    proxy_set_header Host $http_host;

    Solo 用户指南

    2 回复
  • zer0da

    好像 NGINX 里没这句

    1 回复
  • 88250

    请参考用户指南加上应该就没问题了。

  • Rainsheep

    没有, 在 location / {
    proxy_pass http://www.rainsheep.top:8080;
    }这里面吗

    1 回复
  • 88250

    对的,还有其他的几条最好也加上,麻烦参考用户指南。

    2 回复
  • zer0da

    OK 了, 谢谢啦。

  • Rainsheep

    我遇到一个问题,不知道为什么。nginx 配置文件。

    upstream backend {
        server localhost:8080;
    }
    location / {
            proxy_pass http://backend$request_uri;
    }
    

    按照上面那样配的话出现 502。

    当我直接这样配置的话

    location / {
            proxy_pass http://www.rainsheep.top:8080;
    }
    

    就可以访问,这是什么原因

    1 回复
  • 88250

    第二种配置方式可能会把 Host 标头传递给上游服务,仅仅是猜测。

    1 回复
  • Rainsheep

    第一种为什么会出现 502 错误?

    1 回复
  • 88250

    502 的话 Solo 的日志有什么报错么?

    1 回复
  • Rainsheep
    [WARN ]-[2020-02-05 18:54:46]-[com.zaxxer.hikari.pool.PoolBase:180]: HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl@7ba4ae5 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value. 
    
    1 回复
  • 88250

    这是数据库连接问题,和 NGINX 配置没有关系。检查下数据库是不是连不上吧。

    1 回复
  • Rainsheep

    抱歉,这个错误信息是我刚修改 MySQL 内存的时候报的错误, 页面显示 502 的时候 solo 没有报错

    1 回复
  • 88250

    你再重新给我一下目前的启动命令还有访问方式才好判断问题。

    2 回复
  • Rainsheep

    solo 启动命令:

    docker run --detach --name solo --network=host \
        --env RUNTIME_DB="MYSQL" \
        --env JDBC_USERNAME="root" \
        --env JDBC_PASSWORD="123456" \
        --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
        --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
        b3log/solo --listen_port=8080 --server_scheme=https --server_host=www.rainsheep.top --server_port=
    

    访问方式:www.rainsheep.top

    nginx 启动命令:

    docker run -d -p 80:80 -p 443:443 --name nginx \
    -v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d \
    -v /dockerData/nginx/ssl:/ssl/ \
    -v /dockerData/nginx/www:/usr/share/nginx/html \
    -v /dockerData/nginx/logs:/var/log/nginx nginx
    
    1 回复
  • 88250

    http 80 端口拒绝了连接,用 https 的话返回 502,应该是 NGINX 配置有问题吧,再贴下 NGINX 配置吧。

  • Rainsheep

    这是 nginx 的配置文件:

    upstream backend {
        server localhost:8080;
    }
    server {
        listen       443;
        server_name  www.rainsheep.top;
    	access_log off;
    	
    	ssl on;
    	ssl_certificate /ssl/3118615_rainsheep.top.pem;
    	ssl_certificate_key /ssl/3118615_rainsheep.top.key;
    	ssl_session_timeout 5m;
    	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    	ssl_prefer_server_ciphers on;
    
        location / {
    	#这样写的话,可以访问
    	proxy_pass http://www.rainsheep.top:8080;
    	#这样写的话,不能访问
            proxy_pass http://backend$request_uri;
            proxy_set_header  Host $http_host;
            proxy_set_header  X-Real-IP  $remote_addr;
            client_max_body_size  10m;
        }
    }
    
    1 回复
  • 88250

    proxy_pass http://backend$request_uri; 这样写没错的,我刚刚测试过。但你的有问题,我也很迷茫 🤣

    1 回复
  • Rainsheep

    好,那我改成那个吧,能访问就行,别的就先不管啦。

    1 回复
  • 88250

    我知道为啥了,你用了两个 docker 容器,但是 NGINX 容器没有在宿主机网络上,也就是说 Solo 和 NGINX 网络是不通的,这就导致了使用命名 backend 时候的 502。但如果你使用域名反代的话走的是公网解析网络,所以没有问题。

    1 回复
  • Rainsheep

    明白了 感谢

  • Leif160519 1 1 评论
    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:8080;
    }
    
    1 回复
    这样写就 OK 了,反正不知道为何,之前只有第二句都是可以的,更新了新的镜像之后,第一句必须有才行
    Leif160519 1 1 赞同
  • zzjjhh001

    nice

请输入回帖内容 ...