nginx url 重写的问题

2015-12-03 21:13:34 +08:00
 KIDJourney
最近要给学校写个东西,但是学校只给了一个域名,也不能改 dns 服务器,于是就有了如下奇怪的要求:

域名是 xxx.xxx.xxx
这个域名下存在多个服务
比如社团是 xxx.xxx.xxx/club 校内新闻是 xxx.xxx.xxx/news

如何让这两个请求指向不同的 root
同时使 xxx.xxx.xxx/club/viewclub/1 这类请求在应用看来是 /viewclub/1 呢?

求大腿指教。。。。以前没有写过这种配置。。。。
2702 次点击
所在节点    NGINX
9 条回复
wizardoz
2015-12-03 21:42:38 +08:00
我滴天,这是 nginx 最基本的配置
wizardoz
2015-12-03 21:47:56 +08:00
在一个 server 下写多个 location 就可以了

location /club {
root /location/to/club/static/files;
}

location /news {
root /location/to/news/static/files;
}
然后静态页面在通过自己的接口取数据。

如果前后端不是分离的,就用反向代理,定向到不同的端口或内网服务器上。
location /club {
rewrite /club/(.*) /$1 break;
proxy_pass http://your.club.site;
proxy_set_header Host 'your.club.site';
}
your.club.site 可以是没有购买的域名,只要你配置另一个 server HostName 为 your.club.site 就行了。
KIDJourney
2015-12-03 22:51:15 +08:00
@wizardoz 对不起啦。。。。。
KIDJourney
2015-12-03 22:51:38 +08:00
@wizardoz 好的,多谢了,我去文档里看看各个参数的意义。
lution
2015-12-03 22:56:32 +08:00
@wizardoz 非常详尽👍
KIDJourney
2015-12-04 20:23:01 +08:00
@wizardoz 不好意思。。再打扰一下。。。
如果按照这个配置的话
location /news {
root /location/to/news/static/files;
}
在寻找资源的时候就会进入 /location/to/news/static/files/news 里面寻找吧。。。
/location/to/news/static/files/news/index.php 获取的请求路径是 /news ,能不能让他变成 /呢?
wizardoz
2015-12-05 14:46:01 +08:00
@KIDJourney 将 root 换成 alias 就可以了。
KIDJourney
2015-12-06 11:28:59 +08:00
@wizardoz 再次感谢!
KIDJourney
2015-12-06 15:08:48 +08:00
@wizardoz
还是不行呢。。。。
应用接受到的请求路径还是 /news
.....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/240971

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX