nginx(背景)
nginx 是一个高性能的 HTTP 服务器, 以前我经常在 Linux 系统中配置, 主要做反向代理和负载均衡, 最近根据业务需要, 需要在 Windows 中配置反向和负载, 下面就介绍一下 nginx 的安装与使用
nginx 介绍
Nginx 是一款轻量级 https://baike.so.com/doc/585215-619452.html 的 web https://baike.so.com/doc/4230501-4432285.html 服务器 / 反向代理 https://baike.so.com/doc/5345781-5581226.html 服务器及电子邮件 https://baike.so.com/doc/928072-980969.html (IMAP/POP3)代理服务器, 并在一个 BSD-like 协议下发行. 其特点是占有内存少, 并发 https://baike.so.com/doc/6916691-7138566.html 能力强 并发量在 50,000 [官方]
nginx 的下载和安装
下载: http://nginx.org/en/download.html https://nginx.org/en/download.html
点进去选择版本下载即可: 如图
下载解压:
进入 nginx 文件夹, 双击 nginx.exe 即可简单启动[命令在最后会贴出来]
双击后黑窗口闪退, 可以在任务管理器中查看 nginx 进程
然后在浏览器输入 localhost
nginx 的简单启动已经测试通过
注意: 根据不同的系统可能会出现 80 端口被占用的情况, eg, 在 win10 下, 80 端口可能被 IIS 程序占用, 只需要改 nginx 的默认端口就行了
nginx 的反向代理
反向代理: 是指以代理服务器来接受 Internet 上的连接请求, 然后将请求转发给内部网络上的服务器; 并将从服务器上得到的结果返回给 Internet 上请求连接的客户端, 此时代理服务器对外就表现为一个服务器.
正向代理: 只用于代理内部网络对 Internet 的连接请求, 客户机必须指定代理服务器, 并将本来要直接发送到 Web 服务器上的 http 请求发送到代理服务器中
图解反向代理和正向代理[补充]
正向代理类似一个跳板机, 通过跳板机去访问外部资源
正向代理的用处:
(1)访问原来无法访问的资源, 如 google
(2) 可以做缓存, 加速访问资源
(3)对客户端访问授权, 上网进行认证
(4)代理可以记录用户访问记录(上网行为管理), 对外隐藏用户信息
反向代理:
反向代理的好处:
保证内网的安全, 负载均衡
nginx 的反向代理配置
上面已经简单介绍反向代理与正向代理的区别, 这样有助于大家理解反向代理的好处, 下面就具体介绍一下 nginx 反向代理的配置
在介绍反向代理之前先给大家说一下动静分离的问题:
动静分离的处理也是 nginx 的一个特点, 把静态文件交给 nginx 来处理, 可以增加系统的性能, 把大批量的静态文件以 nginx 的方式去加载, 然后去访问, 不用在系统请求中获得, 减少与系统交互次数, 这也是系统优化的一种方式:
配置文件如下: nginx.conf
然后重启 nginx nginx -s reload 即可 验证如下
上面这是配置动静分离的步骤, 这也是反向代理的一种特殊情况, 下面我来配置一下关于 tomcat 的反向代理
反向代理的配置文件如下:
验证如下:
到这, 单个 server 下的配置反向代理已经基本完成, 多个 server 块下的配置与此类似, 在此不在多放截图, 有兴趣的可以自己手动配置一下进行验证
nginx 的负载均衡
nginx 的负载均衡是 nginx 的一个亮点, 也是核心点, nginx 的高并发, 服务器的合理请求划分都是通过负载来直接或者间接实现的, 下面我介绍集中负载均衡的实现以及适用场景
负载均衡: 把原先一台服务器的请求分发到不同服务器, 以实现服务器减压的目的.(个人理解)
负载均衡建立在现有网络结构之上, 它提供了一种廉价 https://baike.so.com/doc/6467569.html 有效透明 https://baike.so.com/doc/6781847.html 的方法扩展网络设备和服务器的带宽, 增加吞吐量, 加强网络数据处理能力, 提高网络的灵活性 https://baike.so.com/doc/1281694.html 和可用性(百度)
负载均衡的分类: 软件负载均衡和硬件负载均衡 软件主要包括(nginx,lvs,netscaler) 硬件主要包括 F5
下面我简单配置一下负载均衡的实现: 需要至少两台 tomcat 服务器进行模拟.
关于负载均衡的几种方式参考 http://www.cnblogs.com/huhongy/p/7300118.html https://www.cnblogs.com/huhongy/p/7300118.html
关于 nginx 的命令, 主要有
有 dos 命令进如 nginx 的文件夹下
start nginx 启动 nginx 在任务管理器中查看
nginx -s reload 重新加载配置文件使其生效
nginx -s stop 关闭 任务管理器中 kill
nginx -s quit 关闭 任务管理器中不 kill
其他命令自己百度
补充:
nginx 一些常见问题: root 和 alias 的对比区别:
- location /h2 {
- alias d:/newfiber/;
- index index.PHP index.HTML index.htm;
- autoindex on;
- }
- location /maven {
- root d:/newfiber;
- index index.PHP index.HTML index.htm;
- autoindex on;
- }
注意: 1>alias 路径后面必须有 / root 可加可不加
2> alias 访问的就是 alias 的指定文件 (夹) 路径
root 访问的是组合路径 路径 + uri
- eg:
- alias : d:/newfiber/;
- root : d:/newfiber/maven
2 proxy_pass 配置说明 主要看 proxy_pass http://localhost:8888 | http://localhost:8888/ 最后是否有 /
- # 不带 / location /gitbucket
- # proxy_pass http://localhost:8888; ---------> location 的 /gitbucket 作为一级目录
- # 带 / localtion /gitbucket
- # proxy_pass http://localhost:8888/; --------->location 的 /gitbucket 不作为一级目录
- location /gitbucket {
- proxy_pass http://localhost:8888/gitbucket/;
proxy_set_header Host host;proxysetheaderX−Forwarded−Forhost;proxysetheaderX−Forwarded−Forremote_addr;
}
启动脚本: 生成 bat 文件放入到 nginx 的安装目录下
@echo off
rem 如果启动前已经启动 nginx 并记录下 pid 文件, 会 kill 指定进程
nginx.exe -s stop
rem 测试配置文件语法正确性
nginx.exe -t -c conf/nginx.conf
rem 显示版本信息
nginx.exe -v
rem 按照指定配置去启动 nginx
nginx.exe -c conf/nginx.conf
来源: http://www.bubuko.com/infodetail-3309287.html