J'ai le domaine example.com
et le sous-domaine blog.example.com
. J'ai une application Unicorn qui fonctionne à localhost:5000
et utiliser Nginx comme proxy inverse.
Je n'ai eu aucun problème en utilisant seulement le example.com
. Cependant, je veux ajouter le support des sous-domaines et j'ai quelques problèmes.
J'ai du contenu à example.com/blog
. Je veux blog.example.com
pour y pointer, sans que l'utilisateur sache qu'une réécriture est utilisée. Je veux mettre en correspondance toutes les URLs, de sorte que :
-
blog.example.com
->localhost:5000/blog
-
blog.example.com/index.php
->localhost:5000/blog/index.php
-
blog.example.com/foo/bar
->localhost:5000/blog/foo/bar
Ma meilleure tentative jusqu'à présent est la suivante :
server
{
listen 80;
server_name blog.example.com;
location / {
proxy_pass http://localhost:5000/blog/$uri;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
client_max_body_size 4G;
keepalive_timeout 10;
}
Cela réécrit correctement blog.example.com
mais échoue avec blog.example.com/index.php
:
$ curl -v 'http://blog.example.com'
> GET /index.php HTTP/1.1
> Host: blog.example.com
> User-Agent: curl/7.51.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Sun, 26 Mar 2017 12:29:00 GMT
< Content-Type: text/html; charset=iso-8859-1
< Content-Length: 337
< Connection: keep-alive
< Location: http://blog.example.com/blog/index.php