一个nginx部署多个应用及nginx总结

一、背景知识

1、Nginx是什么?

&:Web服务器,静态文件保存、响应http请求。
同时可以提供代理、负载均衡的功能。

2、为什么使用?

&:主要是轻量级和高性能,在一般行业不明显,但在互联网行业极致性能压榨就凸显了。
另外,功能实用,玩的花样多,如负载均衡、代理等。

3、为什么Nginx性能这么高?

因为他的事件处理机制:异步非阻塞事件处理机制:运用了epoll模型,提供了一个队列,排队解决

二、如何使用

1、参数配置

参数格式,块的形式,类似json但无冒号,注意结尾必须有分号。
参数类型:3类;

  1. 全局【nginx产品相关】、
  2. event块【网络】、
  3. http【功能】
    以一个完整的配置为例。
Global: nginx 运行相关
  Events: 与用户的网络连接相关
  http
    http Global: 代理,缓存,日志,以及第三方模块的配置
    server
        server Global: 虚拟主机相关
        location: 地址定向,数据缓存,应答控制,以及第三方模块的配置
worker_processes  1# worker进程的数量
events {                              			# 事件区块开始
	worker_connections  1024# 每个worker进程支持的最大连接数
}                               			# 事件区块结束
http {                           			# HTTP区块开始
	include       mime.types;         			# Nginx支持的媒体类型库文件
	default_type  application/octet-stream;            # 默认的媒体类型
	sendfile        on;       				# 开启高效传输模式
	keepalive_timeout  65# 连接超时
	server {            		                # 第一个Server区块开始,表示一个独立的虚拟主机站点
		listen       80# 提供服务的端口,默认80
		server_name  localhost;    			# 提供服务的域名主机名
		location / {            	        	# 第一个location区块开始
			root   html;       			# 站点的根目录,相当于Nginx的安装目录
			index  index.html index.htm;       	# 默认的首页文件,多个用空格分开
		}          				        # 第一个location区块结果
		error_page   500502503504  /50x.html;          # 出现对应的http状态码时,使用50x.html回应客户
		location = /50x.html {          	        # location区块开始,访问50x.html
			root   html;      		      	        # 指定对应的站点目录为html
		}
	}  

三、如何部署多个前端应用

有3种方式:端口区分、域名区分、url区分。

1、端口区分

关键:配置2个server,监听不同端口,root指向不同目录。
参考:

	######通过端口区分应用   begin
  server {
      listen       9001;
      server_name  localhost;
  	 
      location / {
          root   html;
          index  index.html index.htm  abc.html;
  		if ( $request_method = OPTIONS ) { return 204; }
      }
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
          root   html;
      }

  }
  server {
      listen       9002;
      server_name  localhost;
  	 
      location / {
          root   html_kanban;
          index  index.html index.htm  abc.html;
  		if ( $request_method = OPTIONS ) { return 204; }
      }
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
          root   html;
      }

  }
  ######通过端口区分应用   end

2、域名区分

关键:配置2个server:端口相同,server_name不同,根据传入的http请求域名区分。

	######通过域名区分应用   begin
  server {
      listen       80;        
      server_name  aaa;

      location / {
          root   html_ifis;
          index  index.html index.htm;
  		error_page 404 / ;
      }				
  	
  	location /kanban/ {
          alias  D:/nginx-1.22.0/html_kanban;
          index  index.html index.htm;
  		error_page 404 / ;
      }
  }	
  
  server {
      listen       80;        
      server_name  bbb;

      location / {
          root   html_kanban;
          index  index.html index.htm;
  		error_page 404 / ;
      }				
  	
  	## 配置开发环境对应的proxy
  	location /api/ {
  		proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
  		proxy_set_header Host $host;
  		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  		proxy_pass http://127.0.0.1:8095;  #机器ip
  		expires 0;
      }
  }
  ######通过域名区分应用   end

3、url区分

没搞成。

总结:

  1. 参数server的配置是指虚拟的server;比如可以监听相同的端口。这点与后端的应用不同,后端如果监听相同端口,会报端口冲突。
  2. server.location参数:可以指定本地目录,做直接访问;也可以转发,也就是逆向代理。
  3. 逆向代理也是实现跨域的一种方式:老web中,直接暴露了后端,浏览器直接对后端请求,后端设置了允许跨域;新web中,webpack支持代理(部署时同样配置nginx的代理),前端访问的特定开头的url(/api)。

参考

Nginx面试题:https://www.nginx.org.cn/article/detail/451
Nginx能做什么:https://www.cnblogs.com/dongye95/p/11059024.html

你可能感兴趣的:(VUE,开发,web,nginx,服务器,运维)