windows下Nginx的安装配置与理论学习

一 Nginx的安装配置
1: 下载 nginx

官网下载 http://nginx.org/en/download.html 或者网盘下载

链接:https://pan.baidu.com/s/1sYL-0bzoA45xulfOnicx0Q
提取码:hvmv

下载稳定版本,以nginx/Windows-1.14.2为例,直接下载 nginx-1.14.2.zip

下载后解压,解压后如下
在这里插入图片描述

2: 启动 nginx

1)直接双击 nginx.exe 进行启动
2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可
在这里插入图片描述
3)检查nginx是否启动成功

直接在浏览器地址栏输入网址 http://localhost:80,回车,出现以下页面说明启动成功
在这里插入图片描述
另:可设置开机自启Nginx
参考博客: http://blog.haoji.me/windows-nginx-server.html

Windows下 常用命令:
1)start nginx 启动
2)nginx.exe -s stop 停止
3)nginx.exe -s reload 重新加载配置文件
4)nginx.exe -s reopen 重新打开日志文件
5)nginx -v 查看版本

3: nginx 的配置文件

nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。

整体结构如下:

http {
 	server {
 		listen       82; #监听端口
        server_name  localhost; # 服务地址
        #具体代理实现
        location / {			
            root   html;
			proxy_pass   http://127.0.0.1:8080; #代理路径
            index  index.html index.htm; #nginx配置静态资源
        }
     }
	server {
 		listen       81;
        server_name  localhost;
     }
     .............
}
二 Nginx的配置文件nginx.conf 理论学习

在这里插入图片描述
在这里插入图片描述
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。

1:反向代理实战
#不同路径请求不同服务器配置
server {
    listen       81;
    server_name  localhost;

    location  /test1/ {

		 proxy_pass   http://127.0.0.1:8080;
		 index  index.html index.htm;
    }
	
	location  /test2/ {

		 proxy_pass   http://127.0.0.1:8081;
		 index  index.html index.htm;
    }
	
	location  / {
		 root   html;
		 proxy_pass   http://127.0.0.1:8082;
		 index  index.html index.htm;
    }
}
2:负载均衡配置实战

策略:1:轮询(默认) 2:weight=1 权重最高
在这里插入图片描述
3:ip_hash; 根据第一次ip固定绑定访问服务器地址
在这里插入图片描述
4:fair; 根据响应时间分配
在这里插入图片描述

upstream myserver {
		server 127.0.0.1:8000; #ip地址
		server 127.0.0.1:9090;
		server 127.0.0.1:8080;
	}

在这里插入图片描述

3: 动静分离

在这里插入图片描述

server {
	listen       80;
	server_name  localhost;
	#静态资源
	location  /jingtai {
		 root   /static/html/;  
		 index  index.html index.htm;
	  }
	#动态资源
	location  /dongtai {
		 root   /data/;
	 	 autoindex on;
	}
}
4: 高可用 集群

在这里插入图片描述

4: Nginx的限流方式(两个指令)

limit_req_zone 参数配置
ngx_http_limit_conn_module 参数配置

其他详解

在这里插入图片描述
具体实列如下:

#user  nobody;
worker_processes  2;
#error_log  logs/error.log;
#pid  logs/nginx.pid;

#最大文件打开数(连接),可设置为系统优化后的ulimit -HSn的结果
worker_rlimit_nofile 360000;

events {
    #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
    #use epoll;
    #单个后台worker process进程的 最大并发链接数
    worker_connections 100000;
    #是否串行处理连接
    multi_accept off;
}

http {
    #文件扩展名与类型映射表
    include    mime.types;
    #默认文件类型
    default_type  application/octet-stream;
    #设定请求缓存 
    #户端请求的最大可接受体大小,由行表示
    client_max_body_size 50m;
    #服务器名字的hash表大小
    server_names_hash_bucket_size 256;
    #客户机的请求头设置大小,对于绝大多数请求,1K的缓冲区大小就足够了
    client_header_buffer_size 256k;
    #用来指定客户端请求中较大的消息头的缓存最大数量和大小
    large_client_header_buffers 4 256k;
    
    #用于配置转发至tomcat后;tomcat获取客户端正式ip
    #允许重新定义和添加一些将被传输到代理服务器的请求头行。作为值,可以使用文本、变量及其组合。
    proxy_set_header Host $host;
    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;
    
    #解决js跨域的问题
    #增加头标
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers X-Requested-With;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
    
    #指定客户机请求体缓冲区大小。
    client_body_buffer_size 256k;
    #客户机的请求头设置读取超时。
    client_header_timeout 3m;
    #客户机的请求体设置读取超时。
    client_body_timeout 3m;
    #客户端分配响应超时时间。
    send_timeout 3m;
    #访问日志存放路径
    access_log   no;
    #客户端连接保持活动的超时时间,在超过这个时间之后服务器会关闭该链接。
    keepalive_timeout  0;
    #修改或隐藏Nginx的版本号
    server_tokens off;


    #虚拟主机配置
    server {
    #listen指令指定所包含的服务器接受的地址和端口。可以只指定地址、端口或服务器名作为地址      
    listen       80;
    #e用来指定ip地址或者域名,多个域名之间用空格分开
    server_name  localhost;
    #对 "/gzh" 启用反向代理
    # location /gzh
    # {
    #     #根据表达式来更改URI,或者修改字符串。注意重写表达式只对相对路径有效。
    #     #此处是将/gzh以前的地址替换成http://weixin.qq.com/q/xxx
    #     rewrite ^ http://weixin.qq.com/q/xxx;
    # }
    
    # location /admin {
    #     root   /usr/share/nginx/dist/;
    #     index  index.html index.htm;
    # }
                                                                                                        
    location /peng {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;

            # proxy_set_header Host $proxy_host;
            # proxy_set_header X-Real-IP $remote_addr;
            # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # proxy_set_header Via "nginx";
    }   

    #跳转到/peng
    location / {
            proxy_pass http://127.0.0.1:8080/peng/;
			
			
			
			
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}


#后台管理
server
{
    listen 8080;
    server_name localhost;
    #default_type 'text/html';
    charset utf-8;
  
  #静态资源的分配
     location / {
        root   /usr/share/nginx/dist/;
        index  index.html index.htm;
    }

     #后台访问接口代理
     location /peng {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;

            # proxy_set_header Host $proxy_host;
            # proxy_set_header X-Real-IP $remote_addr;
            # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # proxy_set_header Via "nginx";
    }   
}


# server
# {
#     listen 8080;
#     server_name localhost;
#     #default_type 'text/html';
#     charset utf-8;
#     # 日志级别
#     #error_log  logs/error.log info;    
#      location / {
#         root   /usr/share/nginx/dist/;
#         index  index.html index.htm;
#     }
# }

# server
# {
#     listen 8080;
#     server_name localhost;
#     #default_type 'text/html';
#     charset utf-8;
#     # 日志级别
#     #error_log  logs/error.log info;    
#     location /test {
#         default_type text/html;
#         return 200 "207_8081";
#     }
#     location /peng {
#             proxy_pass http://127.0.0.1:8080;
#             proxy_set_header Host $proxy_host;
#             proxy_set_header X-Real-IP $remote_addr;
#             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#             proxy_set_header Via "nginx";
#     }   
#     location / {
#         root   html;
#         index  index.html index.htm;
#     }
# }

}

补充说明:
在这里插入图片描述
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请 求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~
标识。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值