nginx
GitHub 地址: https://github.com/MingA21/Note/blob/master/笔记/中间件/nginx.md
1. 简介
1.1> 来源
? 为了减轻传统 web 项目中单节点的服务压力, 进而采取批量部署的方式 (集群), 但是总要有一台服务器来充当门面服务, 相较于其他服务器它需要具备更强的并发, 并需要根据每台服务器的负载量, 按照不同的比例分发请求 (负载均衡),Nginx 就是这样一种服务器.
2. 下载 / 安装
2.1> Windows
下载: http://nginx.org/en/download.html
安装一路 next 即可
启动测试 Windows 下, 启动根目录下 nginx.exe 即可, 默认配置 80 端口
2.2> Linux
wget 下载或者通过 ftp 工具上传
wget http://nginx.org/download/nginx-1.13.7.tar.gz ** (若无该命令 yum install wget** 下载)
2. 解压
tar -zxvf nginx-1.13.7
安装编译依赖包
- yum install gcc
- yum install pcre-devel
- yum install zlib zlib-devel
- yum install openssl openssl-devel
- <!-- 一键安装上面四个依赖 -->
- yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
? gcc, 安装 nginx 需要先将官网下载的源码进行编译, 编译依赖 gcc 环境, 如果没有 gcc 环境, 需要安装
? PCRE(Perl Compatible Regular Expressions) 是一个 Perl 库, 包括 perl 兼容的正则表达式库. nginx 的 http 模块使用 pcre 来解析正则表达式, 所以需要在 Linux 上安装 pcre 库.
? pcre-devel 是使用 pcre 开发的一个二次开发库. nginx 也需要此库.
? zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip, 所以需要在 Linux 上安装 zlib 库.
? OpenSSL 是一个强大的安全套接字层密码库, 囊括主要的密码算法, 常用的密钥和证书封装管理功能及 SSL 协议, 并提供丰富的应用程序供测试或其它目的使用. nginx 不仅支持 http 协议, 还支持 https(即在 ssl 协议上传输 http), 所以需要在 Linux 安装 openssl 库.
编译配置准备在 var 下创建 temp/nginx 文件夹, 用于 nginx 运行临时目录
执行编译配置命令
- ./configure \
- --prefix=/usr/local/nginx \
- --pid-path=/var/run/nginx/nginx.pid \
- --lock-path=/var/lock/nginx.lock \
- --error-log-path=/var/log/nginx/error.log \
- --http-log-path=/var/log/nginx/access.log \
- --with-http_gzip_static_module \
- --http-client-body-temp-path=/var/temp/nginx/client \
- --http-proxy-temp-path=/var/temp/nginx/proxy \
- --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
- --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
- --http-scgi-temp-path=/var/temp/nginx/scgi
Prefix 表示 nginx 的安装位置其他都是一些日志, 临时文件的位置 ( 如果嫌麻烦可以直接./configure)
编译配置完后后发现多了一个 makefile 文件
执行编译命令 make
安装 make install
启动测试进入 /usr/local/nginx, 后 ./nginx 启动
测试是否启动成功 ps -ef|grep nginx
浏览器访问:
3. 基本命令
3.1 启动
? ./nginx
注意: 执行./nginx 启动 nginx, 这里可以 - c 指定加载的 nginx 配置文件, 如下:
? ./nginx -c /usr/local/nginx/conf/nginx.conf
如果不指定 - c,nginx 在启动时默认加载 conf/nginx.conf 文件, 此文件的地址也可以在编译安装 nginx 时指定./configure 的参数 (-conf-path= 指向配置文件 (nginx.conf)
3.2 停止
1> 快速停止 ../nginx -s stop 此命令相当于先查询出 pid 然后 kill
2> 待任务执行完毕后停止 ./nginx -s quit
3.3 重启
? ./nginx -s reload
4. 虚拟主机 / 静态代理
虚拟主机: 所谓的虚拟主机就类似互联网下单独的一台服务器, 提供一个外部访问的端口, nginx 默认启动的是 80 端口, 访问的目录资源是 nginx 根目录的 HTML 文件,
nginx 下实现虚拟主机的方式有两种:
配置不同端口, 类似原始 80 端口可以在配置一个 81 端口指定目录即可, 如 html2
通过不同的域名访问, 例如同一个 ip 下配置了两个域名, 也可以针对这两个域名配置不同的资源目录
静态代理: nginx 代理某个服务器的某个目录, 可以配合 ftp 服务器一起使用访问静态资源, 可以说 静态代理是虚拟主机的一种应用方式.
4.1 端口方式配置虚拟主机
? 此时的配置表示访问 localhost:80/ , 默认访问当前目录下 HTML 文件中的内容, 81 同理
4.2 域名方式配置虚拟主机
5. 反向代理 / 负载均衡
5.1 反向代理
? Nginx 代理后台集群服务器就可以称之为反向代理 (演示需要一 Ningx, 两 Tomcat)
1 > 创建两个 tomcat 配置不同的启动端口, 在 tomcat 下修改一个足以区分二者的网页
2> 配置反向代理信息 (upstream)
3> 配置虚拟主机 serve 信息
单纯的虚拟主机只能配置本地或者其他服务器的目录做静态资源的访问, 反向代理则可以将请求转发到其他 Web 服务器上.
? 通过上述配置后访问 loclahost:81, 可以看出两个 tomcat 访问的次数接近 1:1, 也就是说默认权重为 1:1
5.2 负载均衡
? 在反向代理的基础上增加权重配置即可
? 此时每访问两次 8080, 才会访问一次 8081
----------------
来源: http://www.bubuko.com/infodetail-3358081.html