Est-il possible de faire en sorte que Nginx écoute différents ports?

82

J'ai créé un Nginx avec une seule machine virtuelle Linux Azure. Est-il possible de faire en sorte que nginx écoute différents ports afin que le contenu soit différent lorsque je change de numéro de port? J'ai constaté qu'il y aurait une collision si je créais deux ports ou plus liés à HTTP sur une machine virtuelle. Est-ce que quelqu'un peut m'aider avec cela?

Billcyz
la source

Réponses:

89

Oui, ça l'est.

Ce que vous voulez probablement, ce sont probablement plusieurs strophes "serveur", chacune avec un port différent, mais éventuellement (probablement?) Le même nom de serveur, desservant le contenu "différent" de manière appropriée au sein de chacune, avec éventuellement une racine de document différente sur chaque serveur.

La documentation complète est disponible ici: http://nginx.org/en/docs/http/server_names.html

Exemple:

server {
    listen       80;
    server_name  example.org  www.example.org;
    root         /var/www/port80/
}

server {
    listen       81;
    server_name  example.org  www.example.org;
    root         /var/www/port81/
}
Craig Miskell
la source
Good Explantion
billcyz Le
16
C'est agaçant qu'on ne puisse pas le faire, listen 80 81;n'est-ce pas? Oh bien ...
Matt Fletcher
@MattFletcher Il est possible de faire quelque chose de similaire, voir le commentaire de Felix: serverfault.com/a/755791/308219
PaulMest
181

Vous pouvez également faire ce qui suit:

server {
    listen 80;
    listen 8000;
    server_name example.org;
    root /var/www/;
}
Félix
la source
2
C'est bien. En particulier, pouvoir modifier la configuration du serveur dans un seul contexte de serveur semble bien supérieur à celui de risquer d'en changer un et de laisser l'autre inchangé ...
Aaron Sofaer
6
Cela ne répond pas à la question posée par @billcyz. Il a demandé différents ports et différents contenus . Cette réponse donne différents ports avec le même contenu .
Isaac Sutherland
@ Krishnendu: "beaucoup plus pratique"? plus pratique que quoi? Cela ne répond pas à la question OP. Dans ce cas, 80 et 8000 désignent le même contenu. OP a demandé explicitement "lorsque je change de numéro de port, le contenu sera différent". Ainsi, le message de Craig Miskell répond beaucoup mieux à la question que celle-ci
cedbeu
3
@cedbeu: Oui, vous avez raison dans le contexte de la question posée. Craig Miskell, la réponse est plus appropriée. Je cherchais une autre solution pour laquelle je devais diffuser le même contenu sur plusieurs ports: c’était exactement ce dont j'avais besoin. Encore une fois, pour une question donnée, il est plus approprié de poser d'autres questions. Désolé si j'induis en erreur quelqu'un, c'était une erreur honnête de mon côté.
Krishnendu
@Krishnendu pas de problème :) tout est clarifié maintenant
cedbeu