Comment puis-je utiliser proxy_pass Pour toutes les adresses après l'emplacement / par nginx?

Je lance l'application node.js intitulé
https://github.com/zeit/serve
Qui montre des fichiers et des dossiers d'un chemin spécifique de mon ordinateur sur une page Web:


Cette application fonctionne très bien en soi et je ne vois pas de messages d'erreur lorsque vous essayez d'accéder aux dossiers. Cependant, quand j'essaie de le courir avec

nginx

en place

/page/

, Je ne vois pas le contenu des fichiers ou des dossiers, et je reçois

404 Not Found

Erreur, si j'essaie d'y accéder. J'utilise ce qui suit

nginx.conf

déposer:

events {}

http {
server {

listen 80;
server_name 127.0.0.1;

location /page/ {
proxy_pass [url=http://localhost:8070/;]http://localhost:8070/;[/url]
}

}
}

Et le message d'erreur que je vois ce qui suit:


Apparemment, la page est redirigée vers

localhost/a

et non

localhost/page/a

Quand j'essaie d'accéder au dossier

a

. Qu'est-ce qui manque ici? Dois-je utiliser une autre structure pour rediriger l'application complète fonctionnant sur un port spécifique d'un certain endroit (par exemple,

/page

)?
Invité:

Christine

Confirmation de:

[Expression "

Redirection de serveur

", Quand dans le contexte HTTP signifie généralement"

Le serveur envoie 30x répondre

", Par conséquent, votre question peut induire en erreur.]

Le problème n'est pas

nginx

, mais

un service

: L'application proximité doit être capable de créer correctement des liens HTML. En particulier, il doit savoir:

Quel nom d'hôte et quel port de serveur proxy. Peut généralement être transféré à

Forward

Titre:

proxy_set_header Forwarded $proxy_add_forwarded;

Quel est le chemin de la demande. Habituellement, il peut être configuré dans l'application.

Dans ton cas

un service

Utilise probablement absolu URI, Même s'il n'est pas déployé à la racine de votre site Web. Vous pouvez adoucir le problème en précisant

nginx

Pour changer les pages retournées:

location /page/ {
sub_filter 'href="/' 'href="/page/';
sub_filter 'src="/' 'src="/page/';
proxy_pass [url=http://localhost:8070/;]http://localhost:8070/;[/url]
proxy_redirect [url=http://localhost:8070/]http://localhost:8070/[/url] http://$server_name/page/
}

Cependant, rien ne garantit que cette expression révisera toutes les URL.

Commenter

:

server_name

Votre configuration doit avoir un nom de domaine et non une adresse IP. Ensemble

localhost

au lieu.

Catherine

Confirmation de:

Vous pouvez essayer l'accès.
http://127.0.0.1
Dans le navigateur et voir si cela fonctionne? Directif server_name Correspond à l'en-tête d'hôte HTTP comme il est et ne dépend pas de la permission DNS. Si cela fonctionne et que vous voulez accéder à
http://localhost
, S'il vous plaît changer la directive server_name sur localhost au lieu 127.0.0.1

Pour répondre aux questions, connectez-vous ou registre