Re: [问题] django + nginx + 2 domainname

楼主: uranusjr (←這人是超級笨蛋)   2018-01-25 16:42:14
※ 引述《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 系列
不过这个遇到再去找资料就行了, 资料应该不少
作者: redbxh (林佳)   2018-01-25 17:57:00
感谢 这方法可行 现在问题出现在点 app1下的link会变成http://127.0.0.1/app/app/ 这种重复的修一下path 应该就可以了应该说直接输入网址都没问题 但网页内点选就会重复app1我解决了 真的十分感谢你我用两个 location 一个 = / 去处理app1 主页剩下 / 去处理
作者: GNUGCC (-std=c++14)   2018-08-10 00:59:00
void main(void) 的写法是可行的唷^^虽然这个写法较传统,但是语法与文法都正确哦^^目前我使用的 Visual C++ 都接受 void main(void) 与int main(void),各位可以把 C++ 专案改成原生 C++ 类型来用 void main(void) 来写发现也可通过编译.这个就是 Visual C++ 的弹性.

Links booklink

Contact Us: admin [ a t ] ucptt.com