Nginx出现403 Forbidden、404 Not Found错误的解决方案

一、Docker创建Nginx容器

Docker命令

docker run -d \
  --name nginx \
  -p 80:80 \
  -v /root/nginx/dist:/usr/share/nginx/html \
  -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf \
  nginx

nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/json;

    sendfile        on;
    
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root /root/nginx/dist;
            index index.html;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root /root/nginx/dist;
        }
    }
}

二、403 Forbidden

2.1 问题分析

默认情况下,使用Docker创建的Nginx容器默认会以nginx用户运行,而不是root用户

2.2 解决方案

在Nginx配置文件中,指定Nginx以root用户运行

user root;		# 此配置应添加到Nginx配置文件的开头 
user root;		# 此配置应添加到Nginx配置文件的开头 

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/json;

    sendfile        on;
    
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root /root/nginx/dist;
            index index.html;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root /root/nginx/dist;
        }
    }
}

三、404 Not Found

3.1 问题分析

Nginx配置文件中location /块的root指令,错误地指向了主机上的/root/nginx/dist目录,而不是容器内的/usr/share/nginx/html目录

3.2 解决方案

修改Nginx配置文件中location /块的root指令,确保其指向容器内的/usr/share/nginx/html目录

user root;

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/json;

    sendfile        on;
    
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root /usr/share/nginx/html;
            index index.html;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root /root/nginx/dist;
        }
    }
}

相关推荐

  1. Nginx出现403 Forbidden404 Not Found错误解决方案

    2024-04-20 20:54:03       28 阅读
  2. Okhttp 403 Forbidden

    2024-04-20 20:54:03       35 阅读
  3. vue3delete请求报403forbidden,前后端解决方式

    2024-04-20 20:54:03       25 阅读
  4. 解决报错HTTPError: HTTP Error 403: Forbidden

    2024-04-20 20:54:03       31 阅读
  5. nginx405 not allowed问题解决方法

    2024-04-20 20:54:03       59 阅读
  6. nginx405 not allowed问题解决方法

    2024-04-20 20:54:03       65 阅读
  7. 服务器出现404错误怎么处理

    2024-04-20 20:54:03       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-20 20:54:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-20 20:54:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-20 20:54:03       82 阅读
  4. Python语言-面向对象

    2024-04-20 20:54:03       91 阅读

热门阅读

  1. scrapy爬虫实战(部分源代码)

    2024-04-20 20:54:03       38 阅读
  2. linux18:进程等待

    2024-04-20 20:54:03       35 阅读
  3. 【软件设计】

    2024-04-20 20:54:03       27 阅读
  4. MessageToMessageDecoder粘包

    2024-04-20 20:54:03       35 阅读
  5. 后端jar包部署常见运行和停止命令

    2024-04-20 20:54:03       36 阅读
  6. SQL Server详细使用教程

    2024-04-20 20:54:03       39 阅读