simple Nginx config not working

hello,

i am a developer with absolutely no server experience, this project im working on is my first foray into the world of servers. Basically i have to host an API online, on a Linode server running Nginx on Ubuntu. And im having trouble getting a simple server block set up to host a html index page, with just a h1 tag saying 'hello'. I've followed and read various tutorials on getting a simple server block working, i've even got these blocks working on my local machine, but im having issues getting it to work on the remote server.

il show you some blocks that have failed to work for me on the Linode:

first, a simple block to server a static html page, this works on my local machine:

server {

listen 8005;

index index.html;

root /srv/www/site;

}

another simple block:

server {

listen server ip:8006;

server_name "";

index index.html;

root /srv/www/site;

location ~/ {

root /srv/www/site;

}

}

a block for serving php (works locally):

server {

listen server ip:8007;

server_name "";

index index.php index.html index.htm;

root /srv/www/site;

location / {

try_files $uri $uri/ /index.php?q=$uri&$args;

}

location ~* .php$ {

try_files $uri /index.php;

fastcgi_index index.php;

fastcgi_pass 127.0.0.1:9000;

include fastcgi_params;

fastcgiparam SCRIPTFILENAME $documentroot$fastcgiscript_name;

fastcgiparam SCRIPTNAME $fastcgiscriptname;

}

}

whenever i tried to access them through the browser i got server connection timeouts. I do not have any DNS setup with it so i was trying to access it using the server IP and port number:

or

but got nothing.

So one thing that might cause the problem is the fact that another application is being hosted on the server already. It has its own block and is running on its own port. It has its own DNS name pointing to it. But none of this should matter right? as each server block is basically a virtual server or creates a virtual domain. Accessing it through ip and port should work fine, but it aint working!

thats about all i can think of, my knowledge in this area is maxed out and i need help from smart people!

any help is greatly appreciated, thanks!

6 Replies

Some ideas:

Make sure your don't have firewall rules disallowing those non-standard ports like 8005, 8006, 8007, etc. to be used.

Try accesing those services from the linode itself, using a text mode browser like lynx.

Try using a server name other than "". You don't need DNS if you add a suitable line to your "hosts" file

(even Windows machines have a "hosts" file).

thanks, would i be right in saying that removing the server_name directive will still allow me to access it with the IP and Port number?

even allowing the ports using iptables doesnt seem to make a difference.

if you use servername "" then it is the same as not using any servername line at all:

http://nginx.org/en/docs/http/request_processing.html

BTW: How do you configure nginx? Do you create files at /etc/nginx/sites-available and then

make a symlink from /etc/nginx/sites-enabled? Do you reload nginx after making changes?

What about /var/log/nginx?

yeh, create the config in available and symlink it in enabled, reload the server and try again.

checking the error logs at var/log/nginx, i see this: http://i.imgur.com/BORWW0F.jpg

nothing in the access logs

'Already in use' doesn't really make sense as netstat tells me that nginx is listening to those ports.

its hardly something to do with some sort of setting somewhere thats telling nginx to only allow traffic coming into this IP to go to one port and one domain?

i should mention that the live application on this server running on port 80, its working fine. when setting my simple server block to listen to port 80, it actually works!

results of - lsof -i :80

http://i.imgur.com/f6WbR7y.png

does '*:http' mean that port 80 is assigned to listen to all http trafic?

If your server blocks do not conflict at each other, make sure you don't have several daemons (nginx, varnish, apache) trying to listen on the same port. "Address already in use" is what happens for example when you have varnish on port 80 and tell nginx to listen on port 80 as well.

You seem to have something already on port 8006. What is it?

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct