Ghost Blog 1.0.0 在 Server 端安装好后使用 NGINX 进行反代但是 url 依旧是 localhost,如何解决 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
AirSc
V2EX    问与答

Ghost Blog 1.0.0 在 Server 端安装好后使用 NGINX 进行反代但是 url 依旧是 localhost,如何解决

  •  
  •   AirSc 2017-06-16 23:26:48 +08:00 4008 次点击
    这是一个创建于 3088 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本地装好后地址是 localhost:2369,但是反代在域名上后,它依旧是本地配置,导致部分链接无法访问。

    看到 1.0 好像还是 Beta 版,所以就没有 config.js。

    如何解决?
    第 1 条附言    2017-06-17 00:20:30 +08:00
    比如说: https://www.airscr.com/ Logo 处和分享的时候,url 都是 127.0.0.1
    第 2 条附言    2017-06-17 18:44:53 +08:00

    解决方法, NGINX 中 location ^~ / {

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_pass http://127.0.0.1:2369; 
    26 条回复    2017-06-17 18:44:08 +08:00
    xratzh
        1
    xratzh  
       2017-06-16 23:36:05 +08:00 via iPhone
    没看懂?什么链接无法访问?
    AirSc
        2
    AirSc  
    OP
       2017-06-16 23:47:40 +08:00
    @xratzh 在服务器上面搭了一个 Ghost,使用 localhost 的域名,然后利用 Nginx 反代之后,内容当然显示的还是 localhost 的,但是找不到地方把用户访问的 localhost 替换成域名
    xratzh
        3
    xratzh  
       2017-06-16 23:54:23 +08:00 via iPhone
    @AirSc 不懂,不过我写了一件脚本,你可以看看我的 github。
    tayuo
        4
    tayuo  
       2017-06-16 23:55:36 +08:00 via iPhone
    Ghost 1.0.0 推荐使用 Ghost-CLI 进行部署

    可以自动生成配置文件
    AirSc
        5
    AirSc  
    OP
       2017-06-17 00:13:23 +08:00
    @tayuo 对,部署的时候填的 URL 不是 localhost 么?需要用 nginx 反代才可以给用户看。但是反代之后所有的链接都还是 localhost 的。
    AirSc
        6
    AirSc  
    OP
       2017-06-17 00:16:35 +08:00
    @tayuo 比如,我在 config.production.json "url"改成了我的域名,使用反代,反代 localhost:2369,就会导致 redirected you too many times. 的错误。

    Nginx 里是这样配置的:

    location ^~ / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;


    proxy_pass http://127.0.0.1:2369;
    proxy_redirect off;
    }
    AirSc
        7
    AirSc  
    OP
       2017-06-17 00:20:38 +08:00
    @tayuo 比如说: https://www.airscr.com/ Logo 处和分享的时候,url 都是 127.0.0.1
    xratzh
        8
    xratzh  
       2017-06-17 00:34:05 +08:00 via iPhone
    你在 ghost 后台设置用户的主页信息试试?
    xratzh
        9
    xratzh  
       2017-06-17 00:37:13 +08:00 via iPhone
    @xratzh 换个 theme 试试,感觉是 theme 的锅
    AirSc
        10
    AirSc  
    OP
       2017-06-17 00:39:41 +08:00
    @xratzh 没有用,使用的是默认的主题
    AirSc
        11
    AirSc  
    OP
       2017-06-17 00:42:13 +08:00
    @xratzh 我还是直接替换主题里的链接好了- -
    chinni
        12
    chinni  
       2017-06-17 01:09:25 +08:00
    你需要给 nginx 编译一个 subs_filter 模块 替换下字符串
    stillness
        13
    stillness  
       2017-06-17 01:41:09 +08:00 via Android
    没配置 ghost 的 url 吧. 默认是不是没有 config.js, 有个 config.example.js
    GoBeyond
        14
    GoBeyond  
       2017-06-17 05:58:26 +08:00 via Android
    你配置文件有问题吧
    indust
        15
    indust  
       2017-06-17 07:34:07 +08:00
    1.0 版的配置文件是 config.production.json
    AirSc
        16
    AirSc  
    OP
       2017-06-17 08:28:23 +08:00 via Android
    @chinni 目前我的思路就是这个。


    @nirocfz
    @GoBeyond
    @indust 但是怎样设置用户得到的是正确域名。
    AirSc
        17
    AirSc  
    OP
       2017-06-17 08:34:38 +08:00 via Android
    @indust 在 0.x 的版本里,有个 production URL 可以使输出的链接自定义,但是在 1.0 里面的 config.production.json 却没有这个功能
    tayuo
        18
    tayuo  
       2017-06-17 09:49:49 +08:00 via iPhone
    在用 Ghost-CLI 进行 ghost setup 的时候

    第一项填写网址的时候填 http://domain

    不需要填写 127.0.0.1:2368
    stillness
        19
    stillness  
       2017-06-17 09:56:11 +08:00 via Android
    @AirSc 看看有什么配置选项,文件里没有,自己可以加上,url 这个配置是文档里的第一个配置项项啊。自己不告诉 ghost 生成的页面里 url 是什么,当然页面上不是域名。先生成了页面,再通过前面做反代的 nginx 修改页面内容,能起作用,并不合理
    https://docs.ghost.org/v1.0.0/docs/configuring-ghost
    Hardrain
        20
    Hardrain  
       2017-06-17 14:55:56 +08:00
    关于域名是 localhost 的问题:

    检查一下 config.js 中的 url:'https://yourdomain.tld'
    这个地方填的是不是你的域名而非 localhost
    Hardrain
        21
    Hardrain  
       2017-06-17 15:03:06 +08:00
    @AirSc 关于这个重定向循环,并且你使用了 https,你需要让 Ghost(Node 后端知道浏览器在用 https 访问前端,也就是 Nginx)

    前端(反代,Nginx,apache httpd...)需要向后端 Pass 一个 Request Header
    X-Forwarded-Proto:https

    For Nginx:
    server {
    listen 443 ssl http2;
    server_name yourdomain.tld;
    ssl on;

    location / {
    proxy_pass http://127.0.0.1:2369;
    proxy_set_header X-Forwarded-For 'https';
    ......}
    }

    For Apache httpd

    <VirtualHost *:443>
    ServerName yourdomain.tld
    ProxyPass / http://127.0.0.1:2369/
    ProxyPassReverse / http://127.0.0.1:2369/
    ProxyAddHeaders On
    RequestHeader set X-Forwarded-Proto "https"
    ......
    </VirtualHost>
    Hardrain
        22
    Hardrain  
       2017-06-17 15:16:22 +08:00
    如果使用环境变量而非 fixed string
    应该这么写
    Nginx:
    proxy_set_header X-Forwarded-For $scheme;

    Apache httpd:
    RequestHeader set X-Forwarded-Proto "%{REQUEST_SCHEME}s"
    AirSc
        23
    AirSc  
    OP
       2017-06-17 17:46:31 +08:00
    @Hardrain
    location ^~ / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For 'https';

    proxy_set_header X-NginX-Proxy true;


    proxy_pass http:/localhost:2369;
    proxy_redirect off;
    }

    现在是这样写的,凡是他又会重定向到 http://localhost:2369
    AirSc
        24
    AirSc  
    OP
       2017-06-17 17:47:01 +08:00
    proxy_pass http:// 是这样的,上面少写了
    AirSc
        25
    AirSc  
    OP
       2017-06-17 17:50:09 +08:00
    @AirSc 应该是重定向到 https://localhost:2369
    AirSc
        26
    AirSc  
    OP
       2017-06-17 18:44:08 +08:00
    @Hardrain
    location ^~ / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;


    proxy_pass http://127.0.0.(去掉这个)1:2369;

    这样就好了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2180 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 01:20 PVG 09:20 LAX 17:20 JFK 20:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86