Nginx:同一域名下配置Vuepress+Vue(Hash)

因为百度搜索的缘故,将原先的一个Vue前端改为Vuepress+Vue(Hash)。

静态内容部分,使用Vuepress改造,借用了vuepress的melodydl主题,费了一些周折,但想清楚逻辑了,也就快了。

一、配置完后的访问路径

1.www.xxx.com

2.www.xxx.com/wk/#(工作平台)

二、不需要对工作平台的配置进行任何修改

1. router index.js

const router = new Router({

  routes: constantRoutes,

  mode: 'hash'

  // base: '/wk/'  (在hash模式下是无效的,不需要做这个配置,在history模式下要加这个,但是刷新存在问题,没想深入研究)

})

2.config/index.js webpack.prod.config.js(我用的webpack版本4)

publicPath: "./" (就这样不要改)

//publicPath: "./wk/" (这是错误的)

三、nginx配置

1. http模式

worker_processes  2;

error_log  logs/error.log;

events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  1000;

    gzip  on;
	gzip_static on; # 开启静态文件压缩
	gzip_min_length  1k; # 不压缩临界值,大于1K的才压缩
	gzip_buffers     4 16k;
	gzip_http_version 1.1;
	gzip_comp_level 2;
	gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss; # 进行压缩的文件类型
	gzip_vary on;
	gzip_proxied   expired no-cache no-store private auth;
	gzip_disable   "MSIE [1-6].";
	

    server {
        listen       80;
        server_name  localhost www.xxx.com;
		root  d:/dist/home/dist;
		try_files $uri $uri/ =404;

		
		location /wk {
            alias   d:/dist/wk/dist;
			try_files $uri $uri/ /wk/index.html;
            index  index.html index.htm;
        }


        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

		location /api/ {
			proxy_pass http://127.0.0.1:xxxx/;
			proxy_set_header	X-Real-IP $remote_addr;
			proxy_set_header	X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header	Host $http_host;
			proxy_http_version  1.1;
			proxy_set_header	Connection "";
			#proxy_set_header	X-NginX-Proxy true;
			#proxy_redirect		off;
		}
    }
}

注意上面:

1.第一个应用的配置不能用 location /{

},

而是用

        server_name  localhost;
		root  d:/dist/qcw-home/dist;
		try_files $uri $uri/ =404;

2.第二个应用的配置用location /wk,下面使用alias  d:/dist/wk/dist;,而不是root  d:/dist/wk/dist;。

2.https模式


worker_processes  2;

error_log  logs/error.log;

events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  1000;

    gzip  on;
	gzip_static on; # 开启静态文件压缩
	gzip_min_length  1k; # 不压缩临界值,大于1K的才压缩
	gzip_buffers     4 16k;
	gzip_http_version 1.1;
	gzip_comp_level 2;
	gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss; # 进行压缩的文件类型
	gzip_vary on;
	gzip_proxied   expired no-cache no-store private auth;
	gzip_disable   "MSIE [1-6].";
	

    server {
        listen       80;
        server_name  localhost;
		return 301 https://$server_name$request_uri;
    }
	
	# HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  localhost www.xxx.cn;
		root   d:/dist/home/dist;
        index  index.html index.htm;

        ssl_certificate     d:/nginx-1.18.0/conf/xxx/www.xxx.com_bundle.crt;
        ssl_certificate_key  d:/nginx-1.18.0/conf/xxx/www.xxx.com.key;

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

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
		
		location /wk {
            alias  d:/dist/wk/dist;
            index  index.html index.htm;
			try_files $uri $uri/ /wk/index.html;
        }
		
		location /api/ {
			proxy_pass http://127.0.0.1:xxxx/;
			proxy_set_header	X-Real-IP $remote_addr;
			proxy_set_header	X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header	Host $http_host;
			proxy_http_version  1.1;
			proxy_set_header	Connection "";
			#proxy_set_header	X-NginX-Proxy true;
			#proxy_redirect		off;
		}
    }
}

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现nginx配置node socket.io vue的负载均衡,需要先安装nginx和node.js以及socket.io。 以下是简单的步骤: 1. 安装nginx 使用以下命令安装nginx: ``` sudo apt-get update sudo apt-get install nginx ``` 2. 配置nginx 在 /etc/nginx/conf.d/ 目录下创建一个新的配置文件,例如 socketio.conf,将以下内容粘贴到文件中: ``` upstream socketio_backend { ip_hash; server node1:3000; server node2:3000; } server { listen 80; server_name yourdomain.com; location / { proxy_pass http://socketio_backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } ``` 这个配置文件设置了一个名为 socketio_backend 的负载均衡器,它将请求转发到两个不同的Node.js服务器,分别是 node1 和 node2,它们都运行在3000端口上。 3. 安装Node.js和socket.io 在 node1 和 node2 服务器上安装 Node.js 和 socket.io,使用以下命令: ``` sudo apt-get update sudo apt-get install nodejs sudo apt-get install npm sudo npm install socket.io ``` 4. 在Node.js中使用socket.io 在 Node.js 应用程序中使用以下代码启动 socket.io: ``` var io = require('socket.io')(3000); io.on('connection', function (socket) { console.log('a user connected'); }); ``` 这段代码启动了一个 socket.io 实例,并监听在3000端口上,当有一个新的客户端连接时,会在控制台输出“a user connected”。 在Vue.js中使用socket.io 在Vue.js应用程序中使用以下代码连接到socket.io: ``` import io from 'socket.io-client'; const socket = io('http://yourdomain.com'); ``` 这段代码连接到运行在yourdomain.com的socket.io服务器。 至此,你就可以在Vue.js应用程序中使用socket.io了,并且通过nginx实现了负载均衡。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值