我想了解的最好方式重定向流量,都https://app.company.com/到https://app.company.com/app使用nginx的或導軌請求添加網址前綴
app.company.com是一個軌道,它使用的nginx服務靜態資產4.2服務器和獨角獸來處理軌道請求。
這個重定向應該發生在nginx還是rails?
背景故事:
幾年前,我決定支持上分別安裝使用URL加前綴,例如Intranet,一些Rails應用:
https://company.com/app1/
https://company.com/app2/
https://company.com/app3/
company.com跑哪路由流量到nginx的服務器每個應用服務器都基於url前綴。
每個應用程序服務器都運行nginx以提供靜態資產和獨角獸作爲rails服務器。
最近決定將company.com服務器的管理權移交給母公司。因此,決定通過DNS使用子域來代替nginx規則來路由到每個rails服務器。
https://app1.company.com/app1/
https://app2.company.com/app2/
https://app3.company.com/app3/
各個應用服務器是大部分保持不變:
現在的應用程序將使用來訪問。他們仍然運行nginx和獨角獸。
我的主要問題是理解,推動流量爲根,以URL前綴
https://app1.company.com/ --> https://app1.company.com/app1/
沒有網址的前綴根路徑之前從來沒有達到過軌服務器的最佳方式。
UPDATE
這裏是由Vashed的回答提出的原始增強我的nginx的配置文件。
我現在好奇,是否有一個改進,這將允許我的配置文件獨立於服務器名稱像以前一樣。
upstream unicorn {
server unix:/tmp/unicorn.app1.sock fail_timeout=0;
}
server {
listen 80 deferred;
# ADDED THIS LOCATION BLOCK PER VASFED'S ANSWER
location =/{
rewrite^https://app1.company.com/app1;
}
location /app1/assets {
alias /var/www/application/current/public/app1/assets;
}
# Serve file uploads from nginx
location /app1/system {
alias /var/www/application/current/public/app1/system;
}
try_files $uri $uri/ @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://unicorn;
}
client_max_body_size 1G;
keepalive_timeout 10;
}
非常感謝@Vasfed,這得到了它的工作。我很好奇,如果有一種方法可以實現這一點,而不會引入對域名的依賴(例如company.com)。爲了澄清,我將我的nginx配置文件添加到了問題中,並附上了您的建議。 – davew
@davew你可以重定向到'https:// $ host/app1 /',它會從http頭部獲取主機 – Vasfed