windows下nginx的基本使用

153 阅读3分钟

Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,可以实现反向代理,负载均衡和HTTP缓存等。

优点:占内存小,配置简单,高并发连接,内存消耗小,稳定性高,节省带宽(支持GZIP压缩),异步非阻塞事件处理机制

nginx下载:

下载地址 nginx.org/en/download… 下载解压zip文件 在这里插入图片描述

nginx启动:

  1. 双击 nginx.exe 启动
  2. 打开cmd命令行,切换到nginx目录下,执行命令启动

start nginx 或者 nginx.exe

在浏览器输入 http://localhost:80 ,便可以访问到nginx 在这里插入图片描述

nginx常用命令:

停止nginx

// 完整有序的停止nginx,保存相关信息 nginx -s quit // 快速停止nginx,可能并不保存相关信息 nginx -s stop

重启nginx

nginx -s reopen

重新载入配置文件

nginx -s reload

查看帮助信息

nginx -h

查看nginx版本

nginx -v

nginx配置文件:

conf 文件夹下nginx.conf文件为nginx配置文件

组成部分:

main块(全局块): nginx全局信息,指令的相关配置 events块: nginx工作模式,与用户网络连接的相关配置 http块: http协议信息,代理,缓存,日志大多数功能和第三方模块的的相关配置 server块: 虚拟主机的相关配置(一个http块中可有多个) location块: 请求路由,各种页面处理情况的相关配置 upstream块: nginx负载均衡的相关配置

nginx.conf:

#main全局配置
#user  nobody;																	#配置用户或者组,默认为nobody
worker_processes  1;															#允许生成的进程数,默认为1
#error_log  logs/error.log;														#制定日志路径,级别。级别:debug|info|notice|warn|error|crit|alert|emerg
#pid        logs/nginx.pid;                									    #指定nginx进程运行文件存放地址                             

events {																		#工作模式配置
    multi_accept on;  															#设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      															#事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    												#最大连接数,默认为512
}
  
http{                                       									#http配置
	include       mime.types;               									#文件扩展名与文件类型映射表
    default_type  application/octet-stream;                                    	#默认文件类型,默认为text/plain
    #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;  							            		#存储访问记录的日志
    #error_log logs/error.log													#存储记录错误发生的日志
    #gzip  on;																	#采用gzip压缩的形式发送数据
    sendfile on;   																#允许sendfile方式传输文件,默认为off
    sendfile_max_chunk 100k;  													#每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限
    keepalive_timeout 65;  														#连接超时时间,默认为75s
    client_header_timeout 10;													#发送请求头的超时时间
    client_body_timeout 10;														#发送请求体的超时时间
        													
 	server{                                 									#虚拟主机配置
  		listen  80;                    											#端口号
  		server_name  https://blog.csdn.net/weixin_45426836;             		#主机域名
  		charset  utf-8;															#网页的默认编码格式
	
		#跨域配置(在server中设置为允许全局跨域,在location中设置为允许指定文件跨域)
		add_header Access-Control-Allow-Origin *;								#接受跨域请求的请求源(*为接受所有跨域请求)
    	add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';				#接受跨域请求的HTTP方法
    	add_header Access-Control-Max-Age 1728000;								#本次预检请求的有效期,单位为秒
    	#接受跨域请求的头信息字段
    	add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; 

  		location / {                        									#路由配置     
     		root   x:/xxx/xxx;              									#项目所在路径
     		index  index.html index.htm;    									#首页(默认页)
  		}
  		
  		#错误页配置
  		error_page   500 502 503 504  /50x.html;									
	    location = /50x.html {
	        root   html;
	    } 
	    
  		#反向代理配置
  		location / {
		    proxy_pass http://localhost:9999;									#反向代理主机地址配置
		    proxy_set_header X-real-ip $remote_addr;							#设置代理请求头,将用户访问的IP记录到自己的IP地段上
		    proxy_set_header Host $http_host;									#设置代理请求头,将用户访问的地址记录到自己的HOST记录上
		    proxy_connect_timeout 60;											#代理连接超时时间,默认为60
		    proxy_send_timeout 60;												#代理发送超时时间,默认为60
		    proxy_read_timeout 60;												#代理接受超时时间,默认为60
		}
 	}
 	
 	server{                                 									#虚拟主机配置
  		listen  81 default_server;                    							#default_server设置为默认主机,未匹配到主机域名则使用这个server
  		server_name  https://blog.csdn.net/weixin_45426836;             																
  		location / {                        									
     		root   x:/xxx/xxx;              									
     		index  index.html index.htm;    									
  		}
  		
 	server {							    									#多个虚拟主机配置
        ....
        location {
            ....
        }
    }
}

upstream name {                    												#负载均衡配置
	ip_hash;																	#表示让相同的客户端ip请求相同的主机
	#分发服务器的列表配置
  	server 192.168.xxx.xxx:9000;												#默认按请求的顺序依次分配主机
  	server 192.168.xxx.xxx:9001 backup;											#backup表示如果有两台主机,当一台主机发生事故时,才启用这台主机
  	server 192.168.xxx.xxx:9002 weight=1;
  	server 192.168.xxx.xxx:9003 weight=4;										#weight表示该主机的权重,和访问率成正比,默认为1
   	server 192.168.xxx.xxx:9004 down;											#down表示该主机暂停服务
   	server 192.168.xxx.xxx:9005 max_fails=2;									#max_fails表示失败最大次数,超过失败最大次数暂停服务
   	server 192.168.xxx.xxx:9006 fail_timeout=10s;								#fail_timeout表示如果请求受理失败,暂停指定的时间之后重新发起请求
}
nginx处理请求:

nginx 在收到请求时先通过 server_name 匹配一个 server,再通过 server 中的 location 继续处理,如果没有匹配到,则会使用 default_server 中的 location 进行处理,如果没有定义 default_server,则第一个定义的 server 为 default_server

vue项目打包部署到nginx

修改nginx配置文件nginx.conf

nginx.conf:

http{                                           
 	server{                                        
  		listen       8080;                      #设置端口号8080
  		server_name  localhost;                 #主机域名
  		location / {                                      
     		root   C:/vue/dist;                 #dist文件夹路径
     		index  index.html index.htm;        #项目首页
  		}
 	}
}

启动nginx,浏览器输入 http://localhost:8080 便可以访问到我们打包后的vue项目 调试窗口 Network 中可以看到是nginx服务和请求地址 在这里插入图片描述

参考资料

Nginx中文手册:www.dba.cn/book/nginx/ Nginx维基::www.nginx.com/resources/w…