一、Nginx的简单介绍
Nginx是一个高性能http和反方向的服务代理器,占用内存少,并发能力强,单台服务器可支持300~50个并发请求,系统消耗低用于社交网站、新闻资讯、电子商务以及虚拟主机
。
二、Nginx和apache的区别
Nginx和cpache都属于web服务器一种,但是两者使用的场景不一样(1)、apache对动态处理请求强,但是高并发性能弱,耗费资源多。(2)高并发能力强,擅长处理静态请求,反向代理、负载均衡
两者的优缺比较
- nginx配置简洁,apache复杂,nginx静态处理比apache高2陪以上
- Apache是同步多进程模型,一个连接对应一个进程;nginx是异步,多个链接对应一个进程
- Nginx适合做前端服务器,负载性能很好,nginx本身就是反向代理服务器,而且支持负载均衡
- 反向代理的解释
客户端发送到请求代理服务器,由反向代理服务器去选择目标服务器获取它的数据,在返回给客户端。此时反向代理服务器和目标服务器对外就是一台服务器,暴露的代理服务器IP地址,隐藏了真实的服务器地址。代理服务端服务时,代理就是反向代理。
四、负载均衡的理解
在多个服务器的情况下,我们将请求发放到各个服务器上,将原来请求集中到单个服务器的情况改为将请求发送到多个服务器上,负载均衡分发到不同的服务器上,也就是负载均衡。
五、Nginx的安装编译及配置
Nginx最新版本为1.12.0 安装文件可以去官方http://www.nginx.org/下载
安装nginx
-
安装支持软件[root@centos1 ~]# yum -y install pcre-devel zlib-devel
Pcre:是一个perl库,包括兼容的正则表达式库,nginx模块使用pcre来解析曾则表达式,需要安装pcre
Zlib:提供压缩和解压方式nginx使用zlib对http内容gzip
2.创建运行用户、组
[root@centos1 ~]# useradd -M -s /sbin/nologin nginx
创建一个nginx用户名不建立宿主文件夹,也禁止登入shell环境
3.编译及安装nginx
# tar zxf nginx-1.12.0.tar.gz -C /usr/src
把安装包解压缩到/usr/src/
[root@mysql ~]# cd /usr/src/nginx-1.12.0/
进入到这个解压缩文件夹中
[root@centos1 nginx-1.6.2]#./configure –prefix=/usr/local/nginx –user=nginx –group=nginx –with-http_stub_status_module
Prefix安装到那个目录
[root@centos1 nginx-1.6.2]# make&&make install
4.添加符号链接,以便通过nginx命令就可以调用nginx的主程序
[root@centos1 nginx-1.6.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
Nginx的运行控制
1.检查配置文件
[root@centos1 nginx-1.6.2]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Nginx的主程序提供了 -t 用配置文件进行检查,以便找出不当的的错误配置
2.启动和停止nginx
[root@centos1 nginx-1.6.2]# nginx
命令即可启动nginx服务器 - 检查nginx的监听端口,或通过浏览器访问
netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
默认端口是80端口
3.重新加载nginx
[root@centos1 nginx-1.6.2]# killall -s HUP nginx
4.退出nginx
[root@centos1 nginx-1.6.2]# killall -s QUIT nginx
配置文件要是修改过了记得把服务关闭在重启开启
5、用自己的IP地址访问就可以出现一下,证明nginx安装好了
配置文件要是修改过了记得把服务关闭在重启开启
了解nginx的配置文件nginx.conf
[root@centos1 nginx-1.6.2]vim /usr/local/nginx/conf/nginx.conf
1.全局配置
#user nobody;运行用户 默认为nobody
worker_processes 1;工作的进程数量,可以根据cpu核心总数来指定工作进程数
#error_log logs/error.log;//错误日志文件的位置
#pid logs/nginx.pid;文件的位置
events {
use epoll;需添加 使用epoll模型 异步无阻塞
worker_connections 4096;每个进程处理4096个进程
}
3.HTTP配置
http {
include mime.types;
default_type application/octet-stream;
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 main;去掉前面的#(访问日志位置)
server {
listen 80; //网站的监听地址和端口
server_name localhost; //网站的域名
#charset koi8-r;
#access_log logs/host.access.log main; /网站的访问日志存放路径和格式
location / {
root html; //根目录的位置
index index.html index.htm;默认首页
}
#error_page 404 /404.html;
error_page 500 502 503 504 /50x.html; //内部错误的反馈页面
location = /50x.html { 错误页面配置
root html;
}
反向代理和负载均衡操作实验
- 准备两台安装网站服务器apache,安装好的nginx
- 网站1配置
-
安装apache网站[root@localhost yum.repos.d]# yum -y install install httpd
(2)启动apache网站
root@localhost yum.repos.d]# systemctl restart httpd
(3)修改网页内容
[root@localhost yum.repos.d]# vim /var/www/html/index.html
Web1
(4)、添加防火墙访问服务或者关闭防火墙
root@localhost yum.repos.d]# firewall-cmd –add-service=http
success
- 网站2配置
-
安装apache网站[root@localhost yum.repos.d]# yum -y install install httpd
(2)启动apache网站
oot@localhost yum.repos.d]# systemctl restart httpd - 修改网页内容
[root@localhost yum.repos.d]# vim /var/www/html/index.html
Web2
(4)、添加防火墙访问服务或者关闭防火墙
root@localhost yum.repos.d]# firewall-cmd –add-service=http
success
4、反向代理和负载均衡服务器配置
(1)、找一台安装好的nginx服务器
(2)、修改nginx的配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
………….
………….
…………
#gzip on;
upstream apache_server {服务器池:实现反向代理
server 192.168.1.1:80 weight=2;写apache的IP地址
server 192.168.1.3:80 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_server; //把nginx的默认站点通过proxy_pass方法代理到设定好的tomcat_server负载均衡服务器组
最后保存退出
关闭nginx然后在启动
[root@localhost ~]# killall -s QUIT nginx
[root@localhost ~]# nginx
最后找一台客户机访问nginx服务器的IP地址,出现web1点击刷新会出现web2即可