私は、backbonejsアプリケーションとAPIサーバーで動作するようにnginxをセットアップしようとしています。
APIサーバーは外部にあり、https: //website.com/api/を介してルーティングされています...
基本的に、バックボーンアプリが処理できるように、一致しないURLを/index.htmlにルーティングする必要があります。
を使用してみましtry_files
たが、APIが上書きされるだけです。register
リクエストがGETであるかどうか、また、またはlogin
またはと一致しないかどうかを確認する別の場所を設定しようとしましたapi
が、それも機能しません。これが私のserver
これまでのところです:
server {
listen 80; ssl off;
listen 443 ssl;
server_name app.io;
ssl_certificate /etc/nginx/conf/ssl.crt;
ssl_certificate_key /etc/nginx/conf/app.key;
root /home/ubuntu/app/public;
access_log /var/log/nginx/app.access.log;
error_log /var/log/nginx/app.error.log;
index index.html;
location / {
if ($scheme = "http") {
rewrite ^ https://$http_host$request_uri? permanent;
}
}
location ~ ^/(api)|(auth).*$ {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://app.aws.af.cm;
}
location ~ ^(/(register)|(login)).*$ {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# GETs only
limit_except POST {
proxy_pass https://app.aws.af.cm;
}
}
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires max;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
}
現在、try_filesはAPIをオーバーライドし、index.htmlにリダイレクトするだけです。どうすればすべてを互いにうまくプレイできるようになるのでしょうか?
これが私が欲しいものです:
if / - /index.html
else if /api/*|/auth/* - external proxy
else if /login|/register - POST - external proxy
else /* - /#$1