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