概述:
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
Nginx相较于Apache\lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于Epoll的高效事件模型kqueue.
现在我们开始安装Nginx
root@localhost opt]# cd /opt
root@localhost opt]# tar zxvf nginx-1.12.2.tar.gz
[root@localhost nginx-1.12.2]# useradd -M -s /bin/nologin nginx
[root@localhost ~]# id nginx ## 查看用户是否创建成功
uid=1001(nginx) gid=1001(nginx) groups=1001(nginx)
[root@localhost opt]# yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel
gcc和gcc-c++: 就是编译器,支持源码转变为二进制文件
make:将配置文件转换成执行性文件(二进制文件)
pcre-devel:支持正则表达式格式
expat-devel:支持开发的一种格式
zlib-devel:压缩功能,压缩库
每一个后面带一个\代表换行
--------------------------------------
[root@localhost opt]# cd nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
--prefix=/usr/local/nginx \ ## 安装路径
--user=nginx \ ## 用户nginx
--group=nginx \ ## 属组nginx
--with-http_stub_status_module ## 统计模块功能
[root@localhost opt]# make -j3 && make install ## 进行安装编译
##为了使 Nginx 服务器的运行更加方便, 可以为主程序 nginx 创建链接文件, 以便管理员
直接执行 "nginx" 命令就可以调用Nginx的主程序
[root@localhost nginx-1.15.9]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@localhost nginx-1.15.9]# ls -l /usr/local/sbin/nginx
[root@localhost nginx-1.15.9]# nginx -t ### 检查配置文件
[root@localhost nginx-1.15.9]# nginx ## 启动 Nginx
[root@localhost nginx-1.15.9]# netstat -anpt |grep nginx ## 过滤Nginx的进程
[root@localhost ~]# yum -y install psmisc ###最小安装没有killall令需要安装
[root@localhost ~]# killall -s HUP nginx ## 重载Nginx配置文件(相当于刷新)
[root@localhost ~]# killall -s QUIT nginx ## 退出 Nginx
[root@localhost ~]# vi /lib/systemd/system/nginx.service
[Unit]
Description=nginx ###描述
After=network.target ####描述服务类别
[Service]
Type=forking ###后台运行形式
PIDFile=/usr/local/nginx/logs/nginx.pid ###PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx ###启动服务
ExecReload=/usr/bin/kill -s HUP $MAINPID ###根据PID重载配置
ExecStop=/usr/bin/kill -s QUIT $MAINPID ###根据PID终止进程
PrivateTmp=true
[Install]
WantedBy=multi-user.target
==>> wq 保存
[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service
[root@localhost ~]# systemctl enable nginx.service
[root@localhost ~]# systemctl start nginx ## 这样我们就可以用这种方法来开启 Nginx 了
概述:
nginx内置了 http_stub_status 状态统计模块,用来反馈当前的Web访问情况,配置编译参数时可添加
--with-http_stub_status_module 来启用此模块支持,可使用命令 /usr/local/nginx/sbin/nginx -V 来查看已安装的nginx是否包含 http_stub_status 模块。
要使用 nginx 的状态统计功能,除了启用内建模块,还需要修改nginx.conf 配置文件,指定访问位置并添加 stub_status 配置代码
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
[root@localhost ~]# killall -s HUP nginx ## 表示重载配置(刷新的意思)
1、Active connections 表示当前的活动连接数
2、server accepts handled requests 表示已经处理的连接信息,
3、三个数字以此表示 :
已处理的连接数 6、成功的TCP握手次数 6、已处理的请求数 4
概述:
Nginx与Apahce一样,可以实现基于用户授权的访问控制,当客户端想要访问相应网
站或者目录时,要求用户输入用户名和密码才能正常访问,配置步骤与Apache基本一致
适用场景:
当公司的一个部门建立了一个基于nginx的网站,只想让本部门的人登录,不让别的部门的人登录,可以使用基于授权的访问控制
[root@localhost ~]# yum -y install httpd-tools
[root@localhost ~]# htpasswd -c /usr/local/nginx/.passwd.db test
New password:
Re-type new password:
Adding password for user test
[root@localhost ~]# chmod 400 /usr/local/nginx/.passwd.db ## 修改密码文件的权限为400
[root@localhost ~]# chown nginx /usr/local/nginx/.passwd.db
将所有者修改为 nginx ,设置nginx的运行用户能够读取
[root@localhost ~]# cd /usr/local/nginx/
[root@localhost nginx]# cat .passwd.db ##查看存放用户名和密码的文件
test:$apr1$vHVaACQT$i1sRjEd2M59E4EJfpxliA.
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf ##修改配置文件
添加
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/.passwd.db;
==>> wq 保存
[root@localhost ~]# 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
[root@localhost ~]# killall -s HUP nginx ## 重启服务
实验:除主机20.0.0.1之外允许其他客户端访问
首先进入配置文件
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
deny 20.0.0.1;
allow all;
==>> wq 保存
[root@localhost ~]# killall -s HUP nginx ##重载配置文件
在浏览器输入 20.0.0.25 ,登陆不了
概述:
利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程,虚拟主机提供了在同一台服务器,同一组 Nginx进程上运行多个网站的功能。跟Apache一样,Nginx也可以配置多种类型的虚拟主机,分别是基于IP的虚拟主机、基于域名的虚拟主机、基于端口的虚拟主机。
使用Nginx搭建虚拟主机服务器时,每个虚拟Web站点拥有的“serverf”配置段,各自监听的IP地址、端口号可以单独指定,当然网站名称也是不同的。
3、保存到桌面,然后把 .txt 后缀名给删掉,选择 “是”
再覆盖到原来的目录里面,让其生效
5、我们进去把原配置文件的 server 全部打上 # 号注释掉
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
## 第一部分
server {
listen 80;
server_name www.51xit.com;
charset utf-8;
access_log logs/www.51xit.com.access.log;
location /{
root /var/www/html/51xit;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = 50.html{
root html;
}
}
## 第二部分
server {
listen 80;
server_name www.52xit.com;
charset utf-8;
access_log logs/www.52xit.com.access.log;
location /{
root /var/www/html/52xit;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = 50.html{
root html;
}
}
==>> wq 保存
8、测试语法有无错误并创建网页目录
[root@localhost ~]# 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
[root@localhost logs]# mkdir -p /var/www/html/51xit/
[root@localhost logs]# mkdir -p /var/www/html/52xit/
[root@localhost logs]# echo "www.51xit.com" >> /var/www/html/51xit/index.html
[root@localhost logs]# echo "www.52xit.com" >> /var/www/html/52xit/index.html
[root@localhost ~]# killall -s HUP nginx ## 刷新配置文件
1、我们现在虚拟机增加一张网卡,然后输入nmcli connection,获得新网卡的 UID 信息
我们先把 ens37网卡的UID给复制下来
[root@localhost ~]# nmcli connection
NAME UUID TYPE DEVICE
ens33 a5cbd6d6-af14-46be-8534-b0a38f94ef7b ethernet ens33
Wired connection 1 2397a705-a0fc-319f-9d0c-5287116765f0 ethernet ens37
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37
[root@localhost network-scripts]# systemctl restart network ##改完之后刷新网络
这边有个需要注意: 如果ip addr 查看网卡信息,发现没有改成功,可以 ifdown ens37 关闭网卡,在 ifup ens37 打开网卡
再查看就有了!
然后在真机 测试下 是否可以 ping 通
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
进去修改 IP地址,这就是上面我们做的 基于域名的虚拟主机 做的配置,
改成用红框框中的配置,一个是 192.168.100.25的,一个是 20.0.0.25的
修改IP地址
5、验证
[root@localhost ~]# killall -s HUP nginx ## 刷新配置
然后进浏览器测试一下分别输入
192.168.100.25 和 20.0.0.25。如图所示,试验成功
注意!!!!!
如果输入的两个IP打开的是同一个网址的话,并且配置文件没有错误的情况下!我们需要先
关闭 killall -s QUIT nginx,在开启 nginx,然后再重新刷新配置文件 killall -s HUP nginx ,在用浏览器测试就没有问题了
1、将多个端口映射到同一IP地址
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
还是同样的地方,把两个网站的IP改成一样的,然后端口改成不一样的,分别测试一下!
[root@localhost ~]# yum -y install net-tools
[root@localhost logs]# yum -y install psmisc
[root@localhost ~]# cd /usr/local/nginx/logs
[root@localhost logs]# ll
[root@localhost ~]# cat nginx.pid
[root@localhost ~]# nginx
[root@localhost ~]# ll