嘟嘟社区

[疑问] 请教一个Nginx的问题 麻烦大佬帮忙


请教各位大佬个Nginx的问题

在此之前,Nginx是反代后端某个端口,例如配置是
location ^~ / {
    proxy_pass http://127.0.0.1:8888;
    其他部分省略
}

现在我希望根路径,也就是example.com的时候,访问的是一个静态html页面,不通过后端路由。
只需要其他路径,如example.com/sub1,  example.com/sub2等等的时候,才是原来的反代到后端

我修改后,成为了

location =/ {
        index index.html;
        root /www/wwwroot/example.com;
}

location ^~ / {
    proxy_pass http://127.0.0.1:8888;
    其他部分省略
}

但是怎么着都不得行,根路径的还是访问不了,请问大佬们正确的写法应该是啥样的

祝福帮忙的大佬JJ增大1CM

本帖最后由 aboutyj 于 2022-1-4 09:47 编辑

我就有个站类似你这样得需求的,浏览器上面输入domain.com后回车,然后直接指定访问index.html
但我除了首页要求是静态,其他访问就要转发到后端处理
试下这样符不符合你需求吧

  1.     location = /index.html {
  2.         index index.html;
  3.         root /data;
  4.     }
  5.     location = / {
  6.         rewrite ^/(.*)$ index.html permanent;
  7.     }
  8.     location ~ .*$ {
  9.         proxy_pass http://127.0.0.1:8888;
  10.         proxy_set_header   X-Real-IP $remote_addr;
  11.         proxy_set_header   X-Forwarded-Proto $scheme;
  12.         proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  13.         proxy_set_header   Host $http_host;
  14.     }

复制代码

  1. location ^~ /sub1 {

复制代码

谢谢大佬回复

这个写死可以这么写

但是路由有很多种可能,不单单是sub1 假如有很多个无法列举的情况(其实就是把所有的都交给后端处理路由)

location ~ /.+
没试过 猜的

madwind 发表于 2022-1-4 08:40
location ~ /.+
没试过 猜的

谢谢大佬  还是不得行

看来这个根目录静态
其他目录反代还是不好设置啊

  1.         location ~ /.+ {
  2.            default_type text/html;
  3.             return 200 ‘/.+’;
  4.         }
  5.         
  6.         location =/ {
  7.             default_type text/html;
  8.             return 200 ‘/’;
  9.         }

复制代码

我去试了一下 是可以的

madwind 发表于 2022-1-4 08:53
我去试了一下 是可以的

谢谢大佬回复,return 200然后字符,是可以区别开,是和我的写法是差不多的

但是如果是要弄成一个放静态页的index.html,就不得行

你测试下这个看:

  1.         
  2. location ~ /.+ {
  3.            proxy_pass https://www.example.com;
  4.            proxy_set_header Host www.example.com;
  5.         }
  6.         
  7.         location =/ {
  8.              root /www/wwwroot/some_path_with_indexhtml_file;
  9.              index index.html;
  10.         }

复制代码

这样的话,依旧全部都跑到了example.com去了

aboutyj 发表于 2022-1-4 09:38
我就有个站类似你这样得需求的,浏览器上面输入domain.com后回车,然后直接指定访问index.html
但我除了首 …

谢谢大佬

大佬人狠话不多,直接解决问题,说实话我挠头挠了半天没找到问题所在  

么么哒 请大佬喝杯奶茶

本帖最后由 aboutyj 于 2022-1-4 09:58 编辑

mbfo 发表于 2022-1-4 09:56
谢谢大佬

大佬人狠话不多,直接解决问题,说实话我挠头挠了半天没找到问题所在  

啊哈哈哈,能解决就行,感谢奶茶了