128

I created one Nginx with one Linux Azure VM, is it possible to make nginx listen to different ports so that when I change the port number, the content would be different. I found there would be a collision if I created two or more ports related to HTTP on VM. Can anyone help me with that?

billcyz
  • 1,550
  • 3
  • 12
  • 15

2 Answers2

252

You can also do the following:

server {
    listen 80;
    listen 8000;
    server_name example.org;
    root /var/www/;
}
Felix
  • 2,545
  • 2
  • 8
  • 2
  • 2
    This is great. In particular, being able to change the server config in only one server context seems far superior than risking changing one and leaving the other unchanged... – Aaron Sofaer Jul 02 '18 at 22:56
  • 16
    This does not answer the question asked by @billcyz. He asked for different ports and *different content*. This answer gives different ports with the *same content*. – Isaac Sutherland Aug 24 '18 at 03:26
  • 2
    @Krishnendu: "much more convenient"? more convenient than what? This doesn't answer the OP question. In that case, both :80 and :8000 point to same content. OP asked explicitly "when I change the port number, the content would be different". So, post from Craig Miskell answers much better to the question than this one – cedbeu Oct 03 '18 at 06:56
  • 6
    @cedbeu: Yes you are right in context of the question asked Craig Miskell answer is more appropriate. I was looking for the other solution where I need to serve same content on multiple port, this was the exactly what I needed. Again for given question asked other ans is more appropriate, Sorry if I mislead some one, It was a honest mistake from my side. – Krishnendu Oct 04 '18 at 09:05
  • @Krishnendu no problem :) everything clarified now – cedbeu Oct 04 '18 at 12:32
  • 1
    The specific question was to serve different content on different ports, this answer does not achieve that. – Brunis Dec 06 '19 at 12:35
133

Yes, it is.

What you probably want is multiple "server" stanzas, each with a different port, but possibly (probably?) the same server_name, serving the "different" content appropriately within each one, maybe with a different document root in each server.

Full documentation is here: http://nginx.org/en/docs/http/server_names.html

Example:

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
  • 4,086
  • 1
  • 15
  • 16