solo nginx 代理问题

各位大佬,小弟现在遇到 nginx 代理问题想咨询一下,如下:

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://101.133.173.111:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" 
\  b3log/solo --listen_port=8080 --server_scheme=http --server_host=hellohamusuta.xyz

nginx启动命令

docker run --name nginx -d -p 80:80 
\ -v /usr/local/appimage/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 
\ -v /usr/local/appimage/nginx/html:/usr/share/nginx/html c7460dfcab50

其中 nginx.conf 为原生文件,由于不想用 nginx 直接代理到 solo,因此做了一个中转欢迎页面。页面有一链接标签,href="http://101.133.173.111:8090" ,当跳转时会报 Latke 配置错误

尝试将 solo 端口映射到 8090,启动时报 Published ports are discarded when using host network mode,页面同样报 Latke 配置错误

有没有大佬做过 nginx 欢迎页面中转到 solo 的,可否请教一下?

  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    64 引用 • 494 回帖 • 522 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。

    Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
    具体细节请浏览 B3log 构思

    1099 引用 • 8460 回帖 • 628 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    1591 引用 • 10429 回帖 • 574 关注
1 操作
jbw00 在 2020-01-13 11:13:32 更新了该帖
被采纳的回答
  • 88250 1

    试试 --listen_port=8090

8 回帖
请输入回帖内容...
  • jbw00

    总结问题其实就是:solo 是否只能通过 80 端口访问(8080 也需要 nginx 反向代理至 80),而不能通过 -p 8090:80 方式映射。

    1 回复
  • 88250

    --server_port 可以指定访问用的端口

    2 回复
  • jbw00

    尝试过该方法,--server_port 8090 后通过 101.122.173.111:8090 时,博客样式失效
    image.png
    ,且后台管理界面无法打开
    image.png

    1 回复
  • 88250

    样式的问题开 F12 看看应该就能明白;访问不了的问题估计是端口反代配置不对。

    2 回复
  • jbw00

    样式问题不是反代理问题,nginx 并未启动,并尝试更新至最新镜像
    image.png
    清空 Chrome 缓存后页面打不开,能打开的情况应该就是浏览器缓存问题
    image.png
    服务器对应的 8090 端口 telnet 可以联通

  • jbw00

    怕表述不清楚,我再梳理下逻辑:
    期望:用户访问--->nginx(80 端口)的 index.html 页面上的 a 链接(http://11.11.11.11:8090)--->docker 容器上的 solo(8090 端口);
    实际:用户访问--->nginx(80 端口)的 index.html 页面上的 a 链接(http://11.11.11.11:8090)--无法访问-->docker 容器上的 solo(8090 端口);

  • 88250 1

    试试 --listen_port=8090

  • jbw00

    问题已解决:
    需在启动命令中同时设置--server_port=8090 --listen_port=8090 两项参数;
    若单一设置--server_port=8090 将导致返回 503 错误;
    而单一设置--listen_port=8090 将导致博客无法访问。

请输入回帖内容 ...