1

So 2 days ago I can see that page where it saya "Welcome to nginx", however as of now when I tried to access it, it says 404 page not found... Why is this? Inside my sites-enabled folder I have a file named default and it has the following:

# You may add here your
# server {
#       ...
# }
# statements for each of your virtual hosts

server {
        listen   80;
        server_name 127.0.0.1;

        access_log  /var/log/nginx/localhost.access.log;

        location / {
                root   /var/www/nginx-default;
                index  index.html index.htm;
        }

        location /doc {
                root   /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        location /images {
                root   /usr/share;
                autoindex on;
        }

        #error_page  404  /404.html;

        # redirect server error pages to the static page /50x.html
        #
        #error_page   500 502 503 504  /50x.html;
        #location = /50x.html {
        #       root   /var/www/nginx-default;
        #}

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
                #proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
                include fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny  all;
        }
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#listen   8000;
#listen   somename:8080;
#server_name  somename  alias  another.alias;

#location / {
#root   html;
#index  index.html index.htm;
#}
#}


# HTTPS server
#
#server {
#listen   443;
#server_name  localhost;

#ssl  on;
#ssl_certificate  cert.pem;
#ssl_certificate_key  cert.key;

#ssl_session_timeout  5m;

#ssl_protocols  SSLv2 SSLv3 TLSv1;
#ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#ssl_prefer_server_ciphers   on;

#location / {
#root   html;
#index  index.html index.htm;
#}
#}

Here's my nginx.conf file:

user www-data;
worker_processes  4;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

# mail {
#     # See sample authentication script at:
#     # http://wiki.nginx.org/NginxImapAuthenticateWithApachePhpScript
#
#     # auth_http localhost/auth.php;
#     # pop3_capabilities "TOP" "USER";
#     # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#     server {
#         listen     localhost:110;
#         protocol   pop3;
#         proxy      on;
#     }
#
#     server {
#         listen     localhost:143;
#         protocol   imap;
#         proxy      on;
#     }
# }

What am I doing wrong here? I have other virtual host setup in the sites-enabled as well...

UPDATE:

The server_name directives are: -admin.api.frapi
-api.frapi
-default
-example.com
-php.example.com

2
  • What is the IP address you enter in browser? Can you post all server_name directives in all sites-enabled/* ?
    – mkudlacek
    Mar 4, 2011 at 9:40
  • I just do xxx.xxx.xxx.xxx and that's it..
    – EquinoX
    Mar 4, 2011 at 13:40

3 Answers 3

2

Nginx will try to find a suitable virtual host by matching the hostname. If no match is found, it will either use the first defined one, or the one called default. To define a default virtual host, use

server {
   # The default/fallback server must have 'default' in the listen line:
   listen       80 default; 

   # Catch all non-matching requests
   server_name _; 
   access_log  /var/log/nginx/localhost.access.log;

   location / {
        root   /var/www/nginx-default;
        index  index.html index.htm;
   }

   #etc ...

}
1
  • ....specifically "server_name 127.0.0.1;" is bad.
    – symcbean
    Jul 12, 2023 at 13:46
0

Hmm seems to me, that admin.api.frapi is the "default", because it's in the highest position in directory. Try to rename file default to 000-default.

More info: nginx walks thru sites-enabled alphabetically. If there is no virtual host config for desired hostname (given from HTTP request), nginx takes the first file.

0

You may try following configuration in your host file at /etc/nginx/sites-available/yourhostfile

server {
     listen 80;
     server_name example.com x.x.x.x;
     ssl_certificate /etc/ssl/www.example.com.pem;
     ssl_certificate_key /etc/ssl/www.example.com.pem;

Replace the x.x.x.x with the public IP address of your server.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .