Nginx网站服务——关于nginx系统安装、访问状态统计、访问控制、虚拟主机设置

一 nginx服务基础

1.1 nginx概述

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

优点

在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。

1.2 nginx安装步骤

先关闭和禁用防火墙

systemctl stop firewalld
systemctl disabled firewalld

把nginx软件包拷贝到/opt目录下
在这里插入图片描述
解压并安装nginx

cd /opt
tar xzvf nginx-1.15.9.tar.gz 
useradd -M -s /bin/nologin nginx			#创建运行用户、组

安装支持软件、编译安装

yum -y install gcc gcc-c++  make pcre-devel zlib-devel
cd nginx-1.15.9/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module		#开启stub_status状态统计模块
make && make install

1.3 nginx优化

路径优化

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
ls -l /usr/local/sbin/nginx 

启动、重新配置、停止nginx

nginx  ## 启动 Nginx
netstat -anpt |grep nginx ## 过滤Nginx的进程
yum -y install psmisc        ###最小安装没有killall令需要安装 
killall -s HUP nginx  ## 重载Nginx配置文件(相当于刷新)
killall -s QUIT nginx  ## 退出 Nginx

添加系统服务
方法一:

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保存退出
chmod 754 /lib/systemd/system/nginx.service 
systemctl enable nginx.service 
systemctl start nginx

方法二

[root@localhost ~]# cd /etc/inid.d		#添加使用service工具进行管理
[root@localhost init.d]# ls
[root@localhost init.d]# vim nginx
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
  start)
   $PROG
   ;;
  stop)
   kill -s QUIT $(cat $PIDF)
   ;;
  restart)
   $0 stop
   $0 start
   ;;
  reload)
   kill -s HUP $(cat $PIDF)
   ;;
  *)
  		echo "Usage: $0 {start|stop|restart|reload}"
  		exit 1
esac
exit 0
[root@localhost init.d]# chmod +x nginx
[root@localhost init.d]# chkconfig --add nginx
[root@localhost init.d]# chkconfig --level 35 nginx on

此时,在防火墙关闭且nginx服务打开后成功访问
在这里插入图片描述

1.4 访问状态统计

启用HTTP_ STUB_ STATUS状态统计模块
配置编译参数时参加–with-http_stub_status_module
nginx -V 查看已安装的Nginx是否包含HTTP_STUB_STATUS模块
在这里插入图片描述

修改/usr/local/nginx/conf/nginx.conf配置文件

vi /usr/local/nginx/conf/nginx.conf
编辑模式
location / {
	root    html;
	index  index.html   index.htm;
}
添加如下内容
location /status {
	stub_status on;
	access_log off;
}
:wq保存退出
systemctl restart nginx

在这里插入图片描述
Active connections 表示当前的活动连接数
server accepts handled requests 表示已经处理的连接信息
1 1 1表示 :
已处理的连接数1、成功的TCP握手次数1、已处理的请求数1

二 Nginx访问控制

2.1 基于授权的访问控制

yum -y install httpd-tools
创建用户test并设置密码
htpasswd -c /usr/local/nginx/passwd.db test
New password: 
Re-type new password:
查看密码(已加密)
cat /usr/local/nginx/passwd.db

修改文件权限为只读

chmod 400 /usr/local/nginx/passwd.db

将所有者修改为 nginx ,设置nginx的运行用户能够读取

chown nginx /usr/local/nginx/passwd.db
ll -d /usr/local/nginx/passwd.db

修改主配置文件nginx.conf,对相应目录添加认证配置项

vi /usr/local/nginx/conf/nginx.conf
编辑模式
location / {
	root    html;
	index  index.html   index.htm;
	#添加如下两行
	auth_basic "secret";
	auth_basic_user_file /usr/local/nginx/passwd.db;
}
[root@localhost ~]# nginx -t  #检测语法
[root@localhost ~]# systemctl restart nginx

在这里插入图片描述
输入用户名和密码成功登录
在这里插入图片描述

2.2 基于客户端的访问控制

配置规则

deny IP/IP段:拒绝某个IP或IP段的客户端访问

allow IP/IP段:允许某个IP或IP段的客户端访问

规则从上往下执行,如匹配则停止,不再往下匹配

注意
deny和allow都是仅拒绝/允许的关系

配置步骤
修改主配置文件nginx.conf,添加相应配置项,除主机20.0.0.1之外允许其他客户端访问
vi /usr/local/nginx/conf/nginx.conf
编辑模式
location / {
	root    html;
	index  index.html   index.htm;
	auth_basic "secret";
	auth_basic_user_file /usr/local/nginx/passwd.db;

	deny 20.0.0.1;
	allow all;
}
[root@localhost ~]# systemctl restart nginx

三 nginx虚拟主机

利用虚拟主机,不需要为每个运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程,虚拟主机提供了在同一台服务器,同一组 Nginx进程上运行多个网站的功能。

3.1 基于域名的虚拟主机

1.修改Windows客户机的C:\Windows\System32\drivers\etc/hosts文件
20.0.0.11	www.61ser.top	www.51ser.top
2.准备各个网站的目录和测试首页
mkdir -p /var/www/html/61ser/
mkdir -p /var/www/html/51ser/
echo "www.61ser.top" >> /var/www/html/61ser/index.html
echo "www.51ser.top" >> /var/www/html/51ser/index.html
3.修改配置文件,把配置文件中的server{}代码段全部去掉,加入2个新的server{}段,对应2个域名
vi /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.61ser.top;
charset utf-8;
access_log logs/www.61ser.top.access.log;
location / {
	root /var/www/html/61ser;
	index index.html index.htm;
	}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
	root html;
	}
}
server {
listen 80;
server_name www.51ser.top;
charset utf-8;
access_log logs/www.51ser.top.access.log;
location / {
	root /var/www/html/51ser;
	index index.html index.htm;
	}
error_page 500 502 503 504 /50x.html;
location = 50x.html{
	root html;
	}
}
systemctl restart nginx
测试
www.61ser.top
www.51ser.top

3.2 基于IP的虚拟主机

添加虚拟网卡
修改UUID
修改IP地址:192.168.100.11
修改网关:192.168.100.1

添加网卡的具体操作参见该篇博客:传送门:Linux网卡基本设置及网络测试常用命令

主机配置两个IP地址
vim /usr/local/nginx/conf/nginx.conf
server {
    listen    20.0.0.11:80;
    server_name 20.0.0.11:80;
}
server {
    listen    192.168.100.11:80;
    server_name 192.168.100.11:80;
}
[root@localhost ~]# systemctl restart nginx

3.3 基于端口的虚拟web主机

vim /usr/local/nginx/conf/nginx.conf
server {
    listen    20.0.0.11:666;
    server_name 20.0.0.11:666;
}
server {
    listen    20.0.0.11:888;
    server_name 20.0.0.11:888;
}
[root@localhost ~]# systemctl restart nginx

猜你喜欢

转载自blog.csdn.net/cenjeal/article/details/108555969