如何给Vue项目配置好一个nginx.conf文件?

如何给Vue项目配置好一个nginx.conf文件?

一般前端项目中,会有一个docker/nginx/nginx.conf文件,用于配置DockerFile配置等。

请添加图片描述

那么,如何给项目写好一个nginx.conf文件,以DockerFile为例:

# 使用 Node.js 镜像 , as build 别名构建阶段
FROM node:14 AS build
# 指定构建目录
WORKDIR /holmes-center-front
# 复制 package.json 和 package-lock.json
COPY package*.json ./
# 安装项目依赖
RUN npm install
# 将宿主机的所有文件,放到指定的WORKDIR工作目录里面来
COPY . .
# 执行 npm run build:prod 命令
RUN npm run build:prod

# 使用官方的 Nginx 镜像
FROM nginx:latest
# 将宿主机的 nginx.conf 文件复制到容器中的 /etc/nginx/ 目录
COPY docker/nginx/nginx.conf /etc/nginx/nginx.conf
# 从第一build阶段获取dist下的文件移动到容器中的 /usr/share/nginx/html/ 目录
COPY --from=build /holmes-center-front/dist /usr/share/nginx/html/
# 暴露 Nginx 监听的端口,一般为 80,但这里因为是https协议所以要暴露443端口!
EXPOSE 443
# 启动 Nginx 服务
CMD ["nginx", "-g", "daemon off;"]
  1. 首先,要有一个nginx.conf文件原型,根据自己配置的nginx版本去官方拉取、通过docker创建个容器copy一下也可以。
    • 第一种方式:直接修改nginx.conf文件,替换nginx.conf文件,上面采用的就是这种方式,无论什么配置直接都在nginx.conf文件操作即可。
    • 第二种方式:也可以通过include /etc/nginx/conf.d/*.conf;配置,单独配置。一般用来配置server等。
      请添加图片描述
  2. 确定需要的配置,需要几个进程、几个server、监听的端口是多少、location该怎么配置等。
user  nginx;
worker_processes  1;

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


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

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

    sendfile        on;
    # tcp_nopush     on;

    keepalive_timeout  65;

    client_max_body_size 8M; # 根据实际情况设置更大的值
    large_client_header_buffers 4 32k; # 根据实际情况设置更大的值

    # gzip  on;

    server {
        listen       443;
        server_name  www.holmesfront.com;

        index  index.html index.htm;
        error_page  404              /404.html;
        error_page  500 502 503 504  /50x.html;

        # 生产环境
        location /prod-api/ {
          # 由于报错:431 请求头过大,所以暂时注释以下内容
          # proxy_set_header Host $http_host;
          # proxy_set_header X-Real-IP $remote_addr;
          # proxy_set_header REMOTE-HOST $remote_addr;
          # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          rewrite ^/prod-api(/.*)$ $1 break;
          # 根据 微信云托管环境变量 配置
          proxy_pass https://www.holmesserver.com/;
        }

        location = /login {
            return 301 /index.html;
        }

        location / {
          root /usr/share/nginx/html;
          try_files $uri $uri/ /index.html;
          index  index.html index.htm;
        }

        location = /50x.html {
            root   /usr/share/nginx/html;
        }

    }

    include /etc/nginx/conf.d/*.conf;

}
  1. 下面说几个特别容易忽视的问题:

    端口号 和 协议:搞明白你是http还是https,一个80端口一个443端口。

    • 平时配置80端口配置多了就容易忽视。这次配置微信云托管,给予的就是443端口,无论是微信云托管、DockerFile还是Nginx.conf一般默认暴露的端口都是80端口,没注意,排查了好久。。。才发现这个问题,纯属浪费时间。

    try_files 指令:用于在文件系统中查找文件,并在找不到文件时执行指定的操作。在上下文中,try_files $uri $uri/ /index.html; 的作用如下:

    • $uri: 首先尝试匹配请求的 URI 对应的文件。如果该文件存在,Nginx会直接返回该文件。
    • $uri/: 如果上述步骤未成功,尝试查找与请求 URI 相关联的目录。如果找到目录,Nginx会尝试使用默认的索引文件(通常是 index.html)。如果找到目录并存在索引文件,Nginx会返回该文件。
    • /index.html: 如果前两步都失败,最后一步是将请求重定向到 /index.html。这通常用于单页应用(SPA)的路由,就是Vue等单页面应用用的很多,其中前端路由负责处理路径,而后端始终返回主页。

🚨Tips:不配置try_files,像Vue的前端路由就不会起作用,nginx配置对应的location只会检索本地或者代理服务器。

SPA 的路由,就是Vue等单页面应用用的很多,其中前端路由负责处理路径,而后端始终返回主页。

🚨Tips:不配置try_files,像Vue的前端路由就不会起作用,nginx配置对应的location只会检索本地或者代理服务器。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在部署Vue项目Nginx时,需要对nginx.conf进行相应的配置。首先,你需要找到nginx.conf的位置,一般在目录/usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx中。然后,你可以使用以下步骤进行配置: 1. 打开nginx.conf文件:在终端中使用文本编辑器打开nginx.conf文件,可以使用命令`sudo vi /etc/nginx/nginx.conf`来编辑该文件。 2. 配置根目录:在配置文件中找到`root`指令,并将其值设置为你Vue项目的打包输出文件所在的目录,通常是dist目录。例如:`root /path/to/your/vue/project/dist;`。 3. 配置代理:如果你的Vue项目需要与后端API进行通信,你可能需要配置代理。在nginx.conf文件中找到`location /`块,并添加以下配置信息: ``` location /api/ { proxy_pass http://your-api-domain.com; } ``` 这个配置将会把以`/api/`开头的请求转发到指定的API域名。 4. 保存并退出:完成以上配置后,保存文件并退出文本编辑器。 5. 重启Nginx服务:在终端中运行`sudo service nginx restart`或者`sudo systemctl restart nginx`命令来重新启动Nginx服务,以使配置生效。 这样,你的Vue项目就成功部署到Nginx上了。请确保路径和配置信息与你的实际情况相符。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue部署到nginx](https://blog.csdn.net/weixin_45079813/article/details/121552726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue项目nginx服务器部署详细流程....](https://blog.csdn.net/wanghe1111_/article/details/122828539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xupengboo

你的鼓励将是我创作最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值