作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [问题] django + nginx + 2 domainname
时间Thu Jan 25 16:42:14 2018
※ 引述《redbxh (LJC)》之铭言:
: Djangp Project
: - / (Homepage)
: - /appa/ (Appa)
: - /appb/ (Appb)
: www.aaa.com -> / (homepage)
: appa.aaa.com -> /appa (Appa)
: appb.aaa.com -> /appb (Appb)
: server {
: ...
: server_name domain2
: ...
: location / {
: rewrite / /app1/
: ...
: }
: }
: 浏览器输入 domain2/ 时确实会连到 /app1
: 但是显示的url 也跟着改回 domain2/app1/
: 有办法让 domain2/ = /app1/ 吗?
我好像有点搞错你的需求, 先确认一下
假设你现在有一个完整的网站架在
http://site.localhost, 包含下面这几页
http://site.localhost/app1/
http://site.localhost/app1/test/
http://site.localhost/app2/
http://site.localhost/app2/test/
你现在想把它们变成
http://app1.site.localhost/
http://app1.site.localhost/test/
http://app2.site.localhost/
http://app2.site.localhost/test/
是这样吗?
如果是的话, 可以试试直接把 nginx 直接 proxy 给自己比较快
server {
... # 大致不变
location / {
# proxy_pass 到 uwsgi, 不变
}
}
# 把 app1.site.localhost proxy 到 127.0.0.1/app1
server {
server_name app1.site.localhost;
location / {
proxy_pass
http://127.0.0.1/app1$request_uri;
}
}
这样当你访问
http://app1.site.localhost/test/
=> 进第二个 virtual server, $request_uri = /test/
=> 被 proxy pass 到
http://127.0.0.1/app1/test/
=> 进第一个 virtual server, $request_uri = /app1/test/
=> 被 proxy pass 到 uwsgi, 後面就跟你本来的程式流程一样
app2 也是比照办理
如果你有需要也可以在原本的 virtual server 加几个 rewrite
把原本 site.localhost/app1/ 的访问重导向到 app1.site.localhost/
这个方法的缺点是, Django app 会不知道自己用的网址其实和使用者看到的不一样
所以如果你需要用一些基於网址的功能, 例如 site framework
就会需要额外设一些 HTTP headers 例如 X-Forwarded 系列
不过这个遇到再去找资料就行了, 资料应该不少
--
1F:→ GNUGCC:void main(void) 的写法是可行的唷^^08/10 00:59
2F:→ GNUGCC:虽然这个写法较传统,但是语法与文法都正确哦^^08/10 02:16
3F:→ GNUGCC:目前我使用的 Visual C++ 都接受 void main(void) 与 08/10 20:18
4F:→ GNUGCC:int main(void),各位可以把 C++ 专案改成原生 C++ 类型来 08/10 20:19
5F:→ GNUGCC:用 void main(void) 来写发现也可通过编译. 08/10 20:21
6F:→ GNUGCC:这个就是 Visual C++ 的弹性.08/11 20:23
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.94.62
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1516869737.A.2B8.html
7F:推 redbxh: 感谢 这方法可行 现在问题出现在点 app1下的link 01/25 17:57
9F:→ redbxh: 修一下path 应该就可以了 01/25 17:57
10F:→ redbxh: 应该说直接输入网址都没问题 但网页内点选就会重复app1 01/25 18:08
11F:推 redbxh: 我解决了 真的十分感谢你 01/25 18:15
12F:→ redbxh: 我用两个 location 一个 = / 去处理app1 主页 01/25 18:16
13F:→ redbxh: 剩下 / 去处理 01/25 18:16