无法从 IP 访问 nginx 服务器

无法从 IP 访问 nginx 服务器

两天前我可以看到那个页面,上面写着“欢迎使用 nginx”,但是现在当我尝试访问它时,它显示 404 页面未找到...这是为什么?在我的 sites-enabled 文件夹中,我有一个名为 default 的文件,它有以下内容:

# 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;
#}
#}

这是我的 nginx.conf 文件:

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;
#     }
# }

我在这里做错了什么?我在启用站点中还设置了其他虚拟主机...

更新:

server_name 指令是:-admin.api.frapi
-api.frapi
-default
-example.com
-php.example.com

答案1

Nginx 将尝试通过匹配主机名来查找合适的虚拟主机。如果未找到匹配项,它将使用第一个定义的虚拟主机或名为 default 的虚拟主机。要定义默认虚拟主机,请使用

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 ...

}

答案2

嗯,在我看来,admin.api.frapi 是“默认”,因为它位于目录中的最高位置。尝试将文件 default 重命名为 000-default。

更多信息:nginx 按字母顺序浏览已启用的站点。如果所需主机名(从 HTTP 请求给出)没有虚拟主机配置,则 nginx 将采用第一个文件。

答案3

您可以尝试在 /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;

将 xxxx 替换为您服务器的公网 IP 地址。

相关内容