nginx
默认配置
user www www;
#程序运行用户和组
worker_processes auto;
#启动进程,指定 nginx 启动的工作进程数量,建议按照 cpu 数目来指定,一般等于 cpu 核心数目
error_log /home/wwwlogs/nginx_error.log crit;
#全局错误日志
pid /usr/local/nginx/logs/nginx.pid;
#主进程 PID 保存文件
worker_rlimit_nofile 51200;
#文件描述符数量
events
{
use epoll;
#使用 epoll 模型,对于 2.6 以上的内核,建议使用 epoll 模型以提高性能
worker_connections 51200;
#工作进程的最大连接数量
}
http{
#网站优化参数
server { #具体的某一网站的配置信息
listen 80; #监听端口
root html; #网页根目录(/usr/local/nginx/html)
server_name www.atguigu.com; #服务器域名
index index.html; #默认加载页面
access_log logs/access.log; #访问日志保存位置
......;
location (.*)\.php$ {
用正则匹配具体的访问对象;
}
location {
跳转等规则;
}
}
server {
虚拟主机;
}
}
Nginx 的状态统计
1. 安装 nginx 时将 --with-http_stub_status_module 模块开启
2. 修改 nginx 配置文件(写入要访问的 server 标签中)
location /nginx_status{
stub_status on;
access_log off;
}
3. 客户端访问网址:http://IP/nginx_status
`Active connections` 表示当前的活动连接数
`server accepts handled requests` 表示已经处理的连接信息
三个数字依次表示已处理的连接数、成功的 TCP 握手次数、已处理的请求数
目录保护
1. 原理和 apache 的目录保护原理一样(利用上一个实验接着完成)
2. 在状态统计的 location 中添加:
auth_basic "Welcome to nginx_status!";
auth_basic_user_file /usr/local/nginx/html/htpasswd.nginx;
3. 使用 http 的命令 htpasswd 进行用户密码文件的创建(生成在上面指定的位置)
#htpasswd -c /usr/local/nginx/html/htpasswd.nginx user
4. 重启 nginx 并再次访问统计页面
基于 IP 的身份验证(访问控制)
1. 接着上一个实验完成操作
2. 在状态统计的 location 中添加:
allow 192.168.88.1;
deny 192.168.88.0/24;
#仅允许 192.168.88.1 访问服务器
虚拟主机(基于域名)
1. 提前准备好两个网站的域名, 并且规划好两个网站网页存放目录
2. 在 Nginx 主配置文件中并列编写两个 server 标签,并分别写好各自信息
server {
listen 80;
server_name blog.atguigu.com;
index index.html index.htm index.php;
root html/blog;
access_log logs/blog-access.log main;
}
server {
listen 80;
server_name bbs.atguigu.com;
index index.html index.htm index.php;
root html/bbs;
access_log logs/bbs-access.log main;
}
3. 分别访问两个不同的域名验证结果
反向代理
1. 在另外一台机器上安装 apache, 启动并填写测试页面
2. 在 nginx 服务器的配置文件中添加(写在某一个网站的 server 标签内)
location / {
proxy_pass http://192.168.88.100:80; #此处填写 apache 服务器的 IP 地址
}
3. 重启 nginx,并使用客户端访问测试
负载调度
1. 使用默认的 rr 轮训算法,修改 nginx 配置文件
upstream bbs { #此标签在 server 标签前添加
server 192.168.88.100:80;
server 192.168.88.200:80;
}
server {
........;
#修改自带的 location / 的标签,将原内容删除,添加下列两项
location / {
proxy_pass http://bbs; #添加反向代理,代理地址填写 upstream 声明的名字
proxy_set_header Host $host; #重写请求头部,保证网站所有页面都可访问成功
}
}
2. 开启并设置两台 88.100 & 88.200 的主机
安装 apache 并设置不同的 index.html 页面内容(设置不同页面是为了看实验效果)
3. 重启 nginx,并使用客户端访问测试