当前位置:   article > 正文

Nginx 部署 Vue 项目到 二级目录_vue nginx 二级目录

vue nginx 二级目录

需求:

公司有很多个项目,但是域名是一个,现在需要在域名后面根据项目名进行访问,

如 xielong-dev.work/rm/,xielong-dev.work/auth/

一、Jenkins 构建了一个前端 Docker 服务

1、vue.config.js

  1. module.exports = {
  2. publicPath: '/rm/',

2、路由下 index.js

  1. const router = new VueRouter({
  2. base: '/rm/',
  3. })

3、 axios.js

baseURL: process.env.NODE_ENV === 'development' ? '/rm/api/'

3、VUE 项目中的通用 Dockerfile

  1. # 导入nginx镜像
  2. FROM nginx:1.15.1-alpine
  3. USER root
  4. # 把当打包复制到
  5. ADD ./dist /usr/share/nginx/html
  6. # 使用自定义nginx.conf
  7. COPY nginx.conf /etc/nginx/nginx.conf
  8. EXPOSE 80
  9. # RUN /bin/bash -c 'echo init ok!!!'

4、VUE 项目中的通用 nginx.conf

  1. # worker_processes : 定义了nginx对外提供web服务时的worder进程数,设置为“auto”将尝试自动检测它
  2. worker_processes auto;
  3. #pid /usr/local/nginx/logs/nginx.pid;
  4. #error_log /usr/local/nginx/logs/error.log crit;
  5. # worker_rlimit_nofile : 更改worker进程的最大打开文件数限制
  6. worker_rlimit_nofile 1000000;
  7. events {
  8. # worker_connections : 设置可由一个worker进程同时打开的最大连接数
  9. worker_connections 65536;
  10. # multi_accept : nginx收到一个新连接通知后接受儘可能多的连接
  11. multi_accept on;
  12. # use : 设置用于复用客户端线程的轮询方法
  13. use epoll;
  14. }
  15. http {
  16. include mime.types;
  17. default_type application/octet-stream;
  18. sendfile on;
  19. # tcp_nopush : 告诉nginx在一个数据包里发送所有头文件,而不一个接一个的发送
  20. tcp_nopush on;
  21. #
  22. tcp_nodelay on;
  23. # server_tokens : 并不会让nginx执行的速度更快,但它可以关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的。
  24. server_tokens off;
  25. # 给客户端分配keep-alive连结超时时间。伺服器将在这个超时时间过后关闭连结
  26. keepalive_timeout 10;
  27. # client_header_timeout 和client_body_timeout 设置请求头和请求体(各自)的超时时间。
  28. client_header_timeout 10;
  29. client_body_timeout 10;
  30. # reset_timeout_connection告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空间。
  31. reset_timedout_connection on;
  32. # send_timeout 指定客户端的响应超时时间。
  33. # 这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接。
  34. send_timeout 10;
  35. limit_conn_zone $binary_remote_addr zone=addr:5m;
  36. limit_conn addr 100;
  37. gzip on;
  38. # gzip_disable为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。
  39. gzip_disable "msie6";
  40. # gzip_static告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的资源。
  41. gzip_static on;
  42. # gzip_proxied允许或者禁止压缩基于请求和响应的响应流。我们设置为any,意味著将会压缩所有的请求。
  43. gzip_proxied any;
  44. # gzip_min_length设置对数据启用压缩的最少字节数。
  45. # 如果一个请求小于1000字节,我们最好不要压缩它,因为压缩这些小的数据会降低处理此请求的所有进程的速度。
  46. gzip_min_length 1000;
  47. # gzip_comp_level设置数据的压缩等级。这个等级可以是1-9之间的任意数值,9是最慢但是压缩比最大的。
  48. # 设置为4,这是一个比较折中的设置。
  49. gzip_comp_level 4;
  50. gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  51. # open_file_cache打开缓存的同时也指定了缓存最大数目,以及缓存的时间。
  52. open_file_cache max=100000 inactive=20s;
  53. # open_file_cache_valid 在open_file_cache中指定检测正确信息的间隔时间。
  54. open_file_cache_valid 30s;
  55. # open_file_cache_min_uses 定义了open_file_cache中指令参数不活动时间期间裡最小的文件数。
  56. open_file_cache_min_uses 2;
  57. open_file_cache_errors on;
  58. # include /etc/nginx/conf.d/*.conf;
  59. # include /etc/nginx/sites-enabled/*;
  60. server {
  61. listen 80;
  62. # 接口服务的IP地址
  63. server_name localhost;
  64. charset utf-8;
  65. access_log off;
  66. # app-index.html页面所在文件夹
  67. root /usr/share/nginx/html;
  68. location / {
  69. index index.html index.htm;
  70. try_files $uri $uri/ /index.html;
  71. }
  72. error_page 500 502 503 504 /50x.html;
  73. location = /50x.html {
  74. root html;
  75. }
  76. }
  77. }

5、Jenkins Pipeline 脚本

  1. node {
  2. def DockerRepo='10.3.0.193:5001'
  3. def RemoteHost='devops@10.3.0.196'
  4. def ServiceName='服务名'
  5. stage('Preparation') {
  6. git branch: 'develop', credentialsId: 'Gitlab-Credential-SSH', url: 'git地址'
  7. }
  8. stage('Build') {
  9. nvm('version':'v12.14.1') {
  10. //sh "npm install -g nrm --registry=http://registry.npm.taobao.org/"
  11. sh "npm install"
  12. sh "npm run buildDev"
  13. }
  14. sh "docker build -t ${DockerRepo}/${ServiceName} ."
  15. sh "docker push ${DockerRepo}/${ServiceName}"
  16. sh "docker rmi ${DockerRepo}/${ServiceName}"
  17. sh "docker image prune -f"
  18. }
  19. stage('Remote SSH') {
  20. sh "ssh ${RemoteHost} docker rm -f ${ServiceName} || true"
  21. sh "ssh ${RemoteHost} docker rmi ${DockerRepo}/${ServiceName} || true"
  22. sh "ssh ${RemoteHost} docker run \
  23. --restart=always \
  24. --name=${ServiceName} \
  25. -v /etc/localtime:/etc/localtime \
  26. -p 7000:80 \
  27. -m 1G \
  28. -d ${DockerRepo}/${ServiceName}"
  29. }
  30. }

二、Docker 部署 Nginx 服务

目录如下

  1. ll /docker/nginx/
  2. drwxrwxrwx 2 root root 4096 Nov 26 2021 cert
  3. -rwxrwxrwx 1 kenny kenny 243 Jun 28 18:51 Dockerfile
  4. -rwxrwxrwx 1 kenny kenny 8058 Nov 3 10:59 nginx.conf
  5. -rwxrwxrwx 1 kenny kenny 338 Jun 15 2021 start.sh

1、Dockerfile

  1. FROM nginx:1.16-alpine
  2. ENTRYPOINT nginx -g "daemon off;"

2、Nginx.conf 配置

  1. server {
  2. listen 443 ssl;
  3. charset utf-8;
  4. underscores_in_headers on;
  5. server_name xielong-dev.work;
  6. ssl_certificate cert/xielong-dev.work.pem;
  7. ssl_certificate_key cert/xielong-dev.work.key;
  8. ssl_session_timeout 5m;
  9. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  10. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  11. ssl_prefer_server_ciphers on;
  12. location /rm/ {
  13. proxy_set_header Host $host;
  14. proxy_pass http://10.3.0.196:7000/;
  15. }
  16. location /rm/api/ {
  17. add_header 'Access-Control-Allow-Origin' '*';
  18. add_header 'Access-Control-Allow-Methods' '*';
  19. add_header 'Access-Control-Allow-Headers' '*';
  20. client_max_body_size 35M;
  21. proxy_pass http://10.3.0.221:8600/api/;
  22. }
  23. }

3、启动脚本 start.sh

  1. #!/bin/bash
  2. DOCKERNAME="nginx"
  3. docker rm -f $DOCKERNAME || true
  4. docker build -t $DOCKERNAME .
  5. docker run --name $DOCKERNAME \
  6. -p 7222:7222 \
  7. -p 443:443 \
  8. -v /docker/$DOCKERNAME/nginx.conf:/etc/nginx/nginx.conf \
  9. -v /etc/localtime:/etc/localtime \
  10. -v /docker/$DOCKERNAME/cert:/etc/nginx/cert \
  11. -m 1G \
  12. -d $DOCKERNAME \
  13. --restart=always

三、服务器上面查看

  1. 883b268e1c0f nginx "/bin/sh -c 'nginx -…" About an hour ago Up About an hour 0.0.0.0:443->443/tcp, 80/tcp, 0.0.0.0:7222->7222/tcp nginx
  2. 167ae70926a2 10.3.0.193:5001/rm-frontend-local:0.0.1 "nginx -g 'daemon of…" 23 hours ago Up 23 hours 0.0.0.0:7000->80/tcp rm-frontend-local
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/254099
推荐阅读
相关标签
  

闽ICP备14008679号