有报错:
nginx: [emerg] “user” directive is not allowed here in /etc/nginx/conf.d/nginx.conf:1
解决说明如下:
1、例如dockerfile中关于nginx的内容有这么一段,其中nginx.conf为自定义的配置文件
# 拉取nginx
# 使用稳定版的Alpine Nginx作为基础镜像
FROM nginx:stable-alpine as production-stage
# 从构建阶段复制构建好的应用文件到Nginx的默认静态文件目录
COPY --from=build-stage /app/dist /usr/share/nginx/html
# 删除默认的Nginx配置文件
RUN rm -rf /etc/nginx/conf.d/default.conf
# 添加自定义的Nginx配置文件
ADD ./nginx.conf /etc/nginx/conf.d/
# 暴露端口80
EXPOSE 80
# 让Nginx在前台运行
CMD ["nginx", "-g", "daemon off;"]
2、nginx基础镜像被拉取下来后在容器中自带配置文件/etc/nginx/nginx.conf。
框中的地方可以看到它自动会加载/etc/nginx/conf.d下的全部.conf文件。
所以dockerfile中咱们自定义的conf文件内容就不是完整的nginx.conf的结构,是http这个块的子结构,见如下第3点
3、自定义的nginx.conf结构
放置的位置是/etc/nginx/conf.d/
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# 用于配合前端路由为h5模式使用,防止刷新404 https://router.vuejs.org/zh/guide/essentials/history-mode.html#nginx
# try_files $uri $uri/ =404;
}
# 第一个代理后端地址(vite.config.ts里叫 /api,这里也要保持一致)
location /api {
# 如果后端在本地比如127.0.0.1或者localhost请解开下面的rewrite注释即可
# rewrite ^.+api/?(.*)$ /$1 break;
# 这里填写后端地址(后面一定不要忘记添加 / )
proxy_pass http://10.76.96.xxx:80/;
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect default;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
}
}