nginx部署vue项目

1. 前言

此文档主要介绍如何使用nginx部署vue等前端项目,并配置SSL证书部署的前提下是服务器已经安装nginx,前端项目已打包成静态文件

2. 部署过程

2.1 申请SSL证书

向服务商(阿里云)申请SSL证书,并且下载nginx版本的key和密匙,放置于nginx的安装目录之下

2.2 修改nginx配置文件

修改nginx的配置文件nginx.cnf,修改的内容如下

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

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

	##
	# Logging Settings
	##

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

	##
	# Gzip Settings
	##

	gzip on;
	gzip_disable "msie6";

	##
	# Virtual Host Configs
	##

    #设定虚拟主机配置
  server {
        #侦听443端口https
        listen    443;
        #定义使用 www.nginx.cn访问
        server_name  www.nginx.cn;

      # SSL证书配置
      ssl on;
      # 证书路径
      ssl_certificate      /etc/nginx/ssl/www.nginx.cn.pem;
      ssl_certificate_key  /etc/nginx/ssl/www.nginx.cn.key;

      ssl_session_cache    shared:SSL:1m;
      ssl_session_timeout  5m;

      ssl_ciphers  HIGH:!aNULL:!MD5;
      ssl_prefer_server_ciphers  on;

        # vue打包后静态文件存储路径
        root /home/wwwroot/www.nginx.cn/;

        #默认请求
        location / {
        		# 除去www.nginx.cn/路径的其它路径访问路径例如www.nginx.cn/user
						try_files <span class="katex--inline"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>u</mi><mi>r</mi><mi>i</mi></mrow><annotation encoding="application/x-tex">uri </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6595em;"><span class="mord mathnormal">u</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal">i</span></span></span></span></span>uri/ /index.html last;
            #定义首页索引文件的名称
            index index.html index.htm;   

        }
        # 接口请求转发 www.nginx.cn/api/后面的请求,转发到本地8080端口
        location ^~ /api/ {
            proxy_pass  http://127.0.0.1:8080;
        }
        # 定义错误提示页面
        error_page   500 502 503 504 /50x.html;
        location = /50x.html {
        }

        #静态文件,nginx自己处理
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {

            #过期30天,静态文件不怎么更新,过期可以设大一点,
            #如果频繁更新,则可以设置得小一点。
            expires 30d;
        }
    }
	
	# http转https http80端口重定向至443端口
	server {
		listen 80;
		server_name m.1gene.com.cn;
		return      301 https://<span class="katex--inline"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mi>e</mi><mi>r</mi><mi>v</mi><mi>e</mi><msub><mi>r</mi><mi>n</mi></msub><mi>a</mi><mi>m</mi><mi>e</mi></mrow><annotation encoding="application/x-tex">server_name</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.5806em;vertical-align:-0.15em;"><span class="mord mathnormal" style="margin-right:0.02778em;">ser</span><span class="mord mathnormal" style="margin-right:0.03588em;">v</span><span class="mord mathnormal">e</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span><span class="mord mathnormal">am</span><span class="mord mathnormal">e</span></span></span></span></span>request_uri;
	}
}
</span></span></span></span>

2.3 重启nginx

service nginx restart
### 使用 Nginx 部署 Vue.js 前端应用 为了使 Vue.js 应用能够在生产环境中稳定运行,Nginx 的配置至关重要。以下是详细的配置说明: #### 1. 安装 Nginx 确保服务器已经安装了最新版本的 Nginx。对于大多数 Linux 发行版来说,可以通过包管理器来快速安装。 ```bash sudo apt update && sudo apt install nginx ``` #### 2. 构建并上传 Vue.js 应用 构建 Vue.js 项目以生成用于生产的静态资源文件,并将其放置于 Web 可访问的位置。通常情况下,这涉及到执行 `npm run build` 或者类似的命令,在项目的根目录下创建一个名为 `dist/` 的文件夹[^1]。 #### 3. 修改默认站点配置 编辑 `/etc/nginx/sites-available/default` 文件或者为特定的应用创建一个新的 `.conf` 文件放在 `/etc/nginx/conf.d/` 下面。这里提供了一个基本的例子供参考: ```nginx server { listen 80; server_name example.com; root /path/to/dist/; index index.html index.htm; location / { try_files $uri $uri/ /index.html; } error_page 500 502 503 504 /50x.html; } ``` 这段配置中的关键是 `try_files` 指令,它告诉 Nginx 尝试加载指定路径下的文件;如果没有找到,则返回 `index.html` 页面。这对于单页应用程序 (SPA) 特别有用,因为所有的路由都在客户端处理[^2]。 #### 4. 处理常见的 404 错误 当用户尝试访问不存在的 URL 路径时,默认行为可能会导致浏览器显示 404 Not Found 页面。为了避免这种情况发生,应该调整上述配置中的 `location / {}` 部分,使其总是指向入口 HTML 文档,从而让 JavaScript 运行环境接管剩余的工作流[^3]。 #### 5. 测试与重启服务 保存更改后的配置文件后,建议先测试一下语法是否有错误: ```bash sudo nginx -t ``` 确认无误后再重新启动 Nginx 服务使得新设置生效: ```bash sudo systemctl restart nginx ``` 通过以上步骤就可以成功地使用 Nginx 来托管 Vue.js 单页面应用了。当然,根据具体需求还可以做更多定制化操作,比如启用 HTTPS 加密连接、设置缓存策略等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值