SpringBoot(十四)linux部署springboot项目

81 阅读3分钟

之前在java系列的时候,我们已经研究过在linux服务器中部署springboot项目了。

 

具体请移步《Java(一百五十二)SpringBoot项目快速打包成jar项目与部署

 

我这里的内容需要结合上边的文章来看。

 

上文中的部署的项目中就一个接口,没有前端页面,测试的只是是否能部署成功,但是我这里部署的项目是一个完整的前后端分离的博客。有VUE前端,有Springboot后端,还有基于Springboot项目的webscoket即时聊天功能。

 

之前都是使用Springboot项目做接口使用,前后端项目一起部署我也是第一次,最开始我是想Springboot部署一个项目,配置一个域名。Vue项目部署一个域名。再配置一个跨域,完美解决部署。

 

理想很美好,现实有点小残酷,我像上边那样部署完成,大部分功能都是好用的,除了webscoket,webscoket是不支持非同源链接的。如下图所示:

1.jpg

Host与origin两个字段必须是一样的,否则链接失败。

 

这可怎么办,想要webscoket好用,就得用一个域名,但是一个域名又得配置vue项目,还得配置Springboot项目。

 

这……考验我nginx功底来了这是?小问题,把Springboot项目和vue项目部署在一起就可以了。但是这里需要在路由上做一下区分。否则会有问题。

 

我这里VUE项目使用的history模式,就是路由中没有#,因此这里需要和Springboot做一下区分。

不废话了,我下边直接放出我的nginx配置文件,具体配置文件中有注释:

# webscoket配置
map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
}
server {
        listen       443;
        server_name  guanchao.site;#填写你的域名
        index index.html index.htm index.php;#默认打开页面
        root  /usr/xxx/xxxx;#你的index.php路径
        # error_page 404 /index.html;
 
        autoindex off;
 
        #https配置
        ssl on;
        ssl_certificate   cert/blog/guanchao.site.pem;
        ssl_certificate_key  cert/blog/guanchao.site.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
 
        #开启gzip功能,加快网站打开速度
        gzip on;
        #最小压缩文件大小
        gzip_min_length 1k;
        #开启gzip静态压缩功能
        gzip_static on;
        #gzip缓存大小
        gzip_buffers 4 16k;
        #gzip http版本
        gzip_http_version 1.1;
        #gzip 压缩级别 1-10
        gzip_comp_level 2;
        #gzip 压缩类型
        gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;# 是否在http header中添加Vary: Accept-Encoding,建议开启gzip_vary on;
 
        proxy_read_timeout 60s;
 
        # VUE前端
        location / {
                index index.html;
                # vue 动态路由原始配置
                try_files $uri $uri/ /index.html;
                # laravels 结合vue动态路由配置
                # try_files $uri $uri @laravels/ /index.html;
        }
 
        # java请求
        location /java {
                # 允许 所有头部 所有域 所有方法
                # add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Headers' '*';
                add_header 'Access-Control-Allow-Methods' '*';
 
                proxy_pass   http://127.0.0.1:7001;  # 表示代理到指定的ip地址,就是你之前服务器访问的地址带上端口号
                proxy_set_header Host $host;
                proxy_set_header X-Real-Ip $remote_addr;
                proxy_set_header X-Forwarded-For $remote_addr;
        }
 
        # 处理 WebSocket 通信
        location /api {
                proxy_connect_timeout 60s;
                proxy_send_timeout 60s;
                proxy_read_timeout 60s;
                proxy_http_version 1.1;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Real-PORT $remote_port;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header Scheme $scheme;
                proxy_set_header Server-Protocol $server_protocol;
                proxy_set_header Server-Name $server_name;
                proxy_set_header Server-Addr $server_addr;
                proxy_set_header Server-Port $server_port;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_pass http://127.0.0.1:7001; #此处的端口号要与springboot启动的端口号相同
        }
 
        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
                root   html;  
        }
}
 
server {
        listen 80;
        server_name guanchao.site;
        rewrite ^(.*)$  https://$host$1 permanent;     #将该域名的http访问重写至https
}

 

上边还有webscoket的配置,参考即可。

 

那么,一个完整的Springboot项目(vue + Springboot + webscoket)就部署完成了。

 

部署开始的部分还是要参照《Java(一百五十二)SpringBoot项目快速打包成jar项目与部署

 

有好的建议,请在下方输入你的评论。