在前一篇《nginx基础介绍》中,我们对nginx有了一个基本的认识:包括应用场景、nginx基本架构、功能特性等,我们知道nginx应用比较多的场景是WEB服务器和反向代理服务器。
下面将先进行nginx编译安装,然后再进行nginx的WEB服务相关的应用配置:包括设置配置文件vim下语法高亮显示、配置虚拟主机、基于IP的访问控制、基于用户认证的访问控制、建立下载站点下载列表、URL地址重写/重定向、防盗链、提供Nginx状态页面、配置gzip压缩、日志、基于SSL提供https服务等。
需要准备的安装包:
可以先通过远程挂载的方式将压缩包从Windows系统,挂载到linux系统,之后再进行压缩等操作。
百度云盘链接:Nginx安装包
WEB服务器 | Client端 |
---|---|
主机系统:CentOS 7 | 一般浏览器 |
IP:20.0.0.70 | IP:192.168.1.169 |
1. 安装依赖包
yum -y install gcc gcc-c++ make pcre-devel zlib-devel
#nginx 的配置及运行需要pcre,zlib 等软件包的支持,因此需要预先安装这些软件的开发包(devel),以便提供相应的库和头文件
2、创建名为nginx的用户,且不允许登录系统
useradd -M -s /sbin/nologin nginx
nginx服务程序默认以noginx身份运行,建议为其创建专门的用户账号,以便更准确的控制访问权限,增加灵活性,降低安全风险
3、解压安装包到指定/opt/中
tar zxvf nginx-1.12.2.tar.gz -C /opt/
cd /opt/nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \ #安装目录
--user=nginx \ #运行用户
--group=nginx \ #运行组
--with-http_stub_status_module #启用统计模块,便于查看服务器连接信息
4、make编译
make && make install
5、关闭防火墙,优化路径
systemctl stop firewalld
setenforce 0
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
6、检查配置文件
# 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
7、安装 elinks 安装包,用elinks测试
启动nginx
yum -y install elinks
elinks http://localhost
nginx //启动
killall -1 nginx //重启
killall -3 nginx //停止
1、制作管理脚本,来控制 Nginx 的开启关闭。
vim /etc/init.d/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
2、添加执行权限,将脚本文件添加到服务列表中
cd /etc/init.d
chmod +x nginx
chkconfig --add nginx
chkconfig --level 35 nginx on //开机自启
service nginx start
//启动不行,就先service nginx stop,再service nginx start
[root@localhost init.d]# netstat -natp | grep nginx
在 Nginx 服务器的主配置文件 /usr/local/nginx/conf/nginx.conf 中,包括全局配置,I/O 事件配置,HTTP 配置 中三大块内容。
#user nobody; //运行用户
worker_processes 1; //工作运行数量
#error_log logs/error.log; //错误日志文件的位置
#pid logs/nginx.pid; //PID文件的位置
2、I/O 事件配置
使用“svents{}”界定标记,用来指定nginx进程的I/O响应模型,每个进程的连接数等设置,对于2.6及以上的版本内核,建议使用epoll模型以提高性能,每个进程的连接数应根据实际需要来定,一般在10000一下,默认1024
events {
use epoll; //使用epoll模型
worker_connections 1024; //每进程处理1024个连接
}
若工作进程数为8,每个进程处理4096个连接,则允许nginx正常提供的服务连接数已超过3万个,当然还要看服务器硬件,网络带宽等物理条件的性能表现
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; //访问日志位置
sendfile on; //支持文件发送(下载)
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; //连接保持超时
#gzip on;
server { //web服务器的监听配置
listen 80; //监听端口
server_name localhost; //域名
#charset utf-8; //网页的默认字符集
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
在nginx.conf 配置文件 只修改 server{}区域:
修改三处
server {
listen 80; //监听地址
server_name www.test.com; //第一处:修改监听域名
charset utf-8; //第二处:修改字符集
#access_log logs/host.access.log;
location / {
root html;
index index.html index.htm;
}
//增添一段location /status
location /status {
stub_status on;
access_log off;
}
}
修改好配置文件之后,重启一下服务即可。
service nginx stop
service nginx start
1、安装
yum -y install bind
2、修改
vim /etc/named.conf
vim /etc/named.rfc1912.zones
//复制修改
zone "test.com" IN {
type master;
file "test.com.zone";
allow-update { none; };
};
[root@server1 init.d]# cd /var/named/
[root@server1 named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@server1 named]# cp -p named.localhost test.com.zone
[root@server1 named]# vim test.com.zone
systemctl restart named
在一台 win10系统的客户端中
修改DNS服务器的地址
在win10的浏览器中输入 www.test.com
Nginx 和Apache 一样,可以实现基于用于授权的访问控制,当客户端想访问网站时,会要求输入用户名和密码才可以正常访问,配置步骤和 Apache 基本一致。
基于授权的访问控制配置思路:
1、修改主配置文件 nginx.conf ,添加相应认证配置项。
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;
yum install httpd-tools -y
htpasswd 命令生成用户认证文件
htpasswd -c /usr/local/nginx/passwd.db test01
service nginx restart
4、这时,用win10的浏览器访问网址www.test.com,就会要求输入用户名 test01 和密码123123
2.2、基于客户端的访问控制
可以通过客户端的 IP地址,决定是否允许对页面访问,规则如下:
service nginx restart