V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
q414625852
V2EX  ›  NGINX

nginx 求助,这个反向代码如何写

  •  
  •   q414625852 · 2019-09-23 09:30:45 +08:00 · 4035 次点击
    这是一个创建于 1925 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个 node 站点,纯静态服务,是一些文档内容,解析 md 生成html: http://aaa.com:8888

    另外还有一个站点:http://bbb.com

    现在想把第一个站点链接通过http://bbb.com/doc形式访问,但是遇到一些问题,下面是我的 nginx 配置:

    # bbb 机器
    server {
    	listen 80;
        gzip on;
        location / {
            root /home/work/wwwserver;
        }
        location /doc/ {
            proxy_pass http://aaa.com:8888;
        }
    }
    

    主要问题如下:

    • 1、访问 bbb.com/doc 时,静态资源没有加载,静态资源返回的内容还是 aaa 站点的 html
    • 2、aaa.com:8888/readme.md 可以返回 html,但是这样修改后会发生 301 跳转

    网上搜了一些资料也没有解决,希望大家指点一下

    19 条回复    2019-09-23 14:04:54 +08:00
    mikeguan
        1
    mikeguan  
       2019-09-23 09:50:15 +08:00 via Android
    md 生成 html 的时候需要指定域名二级目录
    rootww21
        2
    rootww21  
       2019-09-23 10:11:34 +08:00
    需要将 http://aaa.com:8888 站点修改为 http://aaa.com:8888/doc 这样的访问方式
    也就是需要一个前缀
    nginx 配置不动
    ytlm
        3
    ytlm  
       2019-09-23 10:15:02 +08:00
    尝试将请求格式改成 bbb.com/doc/
    ytlm
        4
    ytlm  
       2019-09-23 10:16:20 +08:00
    @ytlm #3 或者将 location /doc/ 改成 location /doc 请求格式不变,不行的话就把日志打开看看日志有没有什么异常的
    q414625852
        5
    q414625852  
    OP
       2019-09-23 10:50:19 +08:00
    @ytlm 如果改成 /doc,则会出现下面情况:

    1、访问 bbb.com/doc,静态资源全部 404,日志的话就是静态资源访问不到 bbb.com/js/bundle.js (这个资源是相对路径./js/bundle.js )
    2、访问 bbb.com/doc/,静态资源 200,但返回的是当前的 html,没有错误日志
    seers
        6
    seers  
       2019-09-23 10:50:36 +08:00
    /doc/ -> /doc
    seers
        7
    seers  
       2019-09-23 10:52:58 +08:00
    加一个 proxy_redirect off 试试
    q414625852
        8
    q414625852  
    OP
       2019-09-23 10:54:00 +08:00
    @seers 这样也不行,访问 bbb.com/doc/readme.md 的话,会出现 301 Moved Permanently
    seers
        9
    seers  
       2019-09-23 10:55:54 +08:00
    你加了 server_name 吗,在 server block 里面
    q414625852
        10
    q414625852  
    OP
       2019-09-23 10:57:37 +08:00
    或者简化为,有一个站点是 aaa.com:888,如果通过 bbb.com/doc 完全代理该站点,假设 aaa.com:8888 里的静态资源都是相对路径,使得访问 bbb.com/doc/dev/run.md 可以看到 aaa.com:888/dev/run.md 的内容
    q414625852
        11
    q414625852  
    OP
       2019-09-23 11:12:25 +08:00
    @seers 问下这个 server_name 怎么写。。
    txydhr
        12
    txydhr  
       2019-09-23 11:15:11 +08:00 via iPad
    头像
    play78
        13
    play78  
       2019-09-23 11:15:28 +08:00
    这两个换一下顺序 /doc/ 放到上面
    seers
        14
    seers  
       2019-09-23 11:23:48 +08:00
    server {
    listen 80;

    server_name bbb.com;

    ...


    location /doc {
    proxy_pass http://aaa.com:8888;
    }
    }
    silenceeeee
        15
    silenceeeee  
       2019-09-23 11:26:21 +08:00
    # bbb 机器
    ```
    server {
    listen 80;
    gzip on;
    root /home/work/wwwserver;
    }
    location /doc/ {
    proxy_pass http://aaa.com:8888;
    }
    }
    ```
    silenceeeee
        16
    silenceeeee  
       2019-09-23 11:32:25 +08:00
    @silenceeeee 算了,无视我吧.前面这一条回复触发了回复按钮快捷键,我修正了回复时,提示我包含外链,回复不了了:
    ```请不要在每一个回复中都包括外链,这看起来像是在 spamming```
    lxlnbdywsxs
        17
    lxlnbdywsxs  
       2019-09-23 11:40:29 +08:00
    没太看明白,一个 Nginx 两个站点?
    jerrodpoole
        18
    jerrodpoole  
       2019-09-23 12:46:51 +08:00
    # bbb 机器
    server {
    listen 80;
    gzip on;
    location / {
    root /home/work/wwwserver;
    }
    location /doc/ {
    proxy_pass http://aaa.com:8888/;
    }
    }

    8888 后面加上 / (URI)
    sazima
        19
    sazima  
       2019-09-23 14:04:54 +08:00
    #18 正解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:12 · PVG 05:12 · LAX 13:12 · JFK 16:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.