Nginx虚拟主机
方式一、基于主机多IP方式
监听方式 默认监听所有的IP地址(运行在所有的本机的IP地址上)
监听方式 可以监听在某个IP地址
[root@web01 conf.d]# cat 172.conf
http
................. server层是被http所包含的区块
server {
listen 172.16.1.7;
server_name _;
location / {
root /code/172/;
index index.html;
}
}
....................
mkdir /code/172 -p
echo 172.16.1.7 > /code/172/index.html
测试curl 172.16.1.7
server {
listen 10.0.0.7;
server_name _;
location / {
root /code/10/;
index index.html;
}
}
....................
mkdir /code/10 -p
echo 10.0.0.7 > /code/10/index.html
测试curl 10.0.0.7
方式二、基于端口的配置方式
server {
listen 80;
server_name _;
location / {
root /code/80;
index index.html;
}
}
[root@web01 conf.d]# mkdir /code/80
[root@web01 conf.d]# echo 80808080808008 > /code/80/index.html
[root@web01 conf.d]# systemctl restart nginx
测试浏览器打开
curl 10.0.0.7
[root@web01 conf.d]# cat 81.conf
server {
listen 81;
location / {
root /code/81;
index index.html;
}
}
[root@web01 conf.d]# mkdir /code/81
[root@web01 conf.d]# echo 8181818181818118 > /code/81/index.html
企业场景 管理后台
[root@web01 conf.d]# cat 80.conf
server {
listen 8888;
server_name _;
location / {
root /code/80;
index index.html;
}
location /admin { / ========= /code/app
root /code/app; # 用户访问amdin 实际访问的是 /code/app/admin
index index.html;
}
}
方式三、基于多个hosts名称方式(多域名方式) 企业最常用
www.oldboyedu.com ----> 10.0.0.200
blog.oldboyedu.com ----> 10.0.0.201
sz.oldboyedu.com ----> 10.0.0.202
配置第一个域名 www.oldboyedu.com
[root@web01 conf.d]# cat www.oldboyedu.conf
server {
listen 80;
server_name www.oldboyedu.com;
location / {
root /code/www;
index index.html;
}
}
根据配置文件创建目录
[root@web01 conf.d]# mkdir /code/www -p
[root@web01 conf.d]# echo www > /code/www/index.html
[root@web01 conf.d]# systemctl restart nginx
配置第二个域名blog.oldboye.com
[root@web01 conf.d]# cat blog.oldboy.conf
server {
listen 80;
server_name blog.oldboyedu.com;
location / {
root /code/blog;
index index.html;
}
}
根据配置文件创建目录
[root@web01 conf.d]# mkdir /code/blog -p
[root@web01 conf.d]# echo blog > /code/blog/index.html
[root@web01 conf.d]# systemctl reload nginx
-------------------------------完成
目标:
自己搭建带域名的网站(hosts解析、购买域名)
多端口方式
多IP方式
多域名方式
无法开网页 如何解决
状态码分析
配置文件报错如何解决
nginx -t 日志文件
第一个模块: autoindex on;自动索引
[root@web01 mirrors]# cat /etc/nginx/conf.d/mirrors.oldboy.conf
server {
listen 80;
server_name mirrors.oldboy.com;
location / {
root /code/mirrors;
autoindex on;
index index.html;
}
}
同步源到本地
[root@web01 mirrors]# rsync -avz rsync://mirrors.tuna.tsinghua.edu.cn/centos/ /code/mirrors/
第二个模块:显示内容大小为k m g
autoindex_exact_size on;
第三步模块: 显示时间为本地时间
autoindex_localtime on;
第四个模块: 中文字符乱码
charset utf-8,gbk;
第五个模块: 认证模块 打开网页需要输入用户名和密码
auth_basic "closed site";
auth_basic_user_file /etc/nginx/conf.d/htpasswd;
401: 当没有认证通过的时候
使用htpasswd 生成用户名和加密密码
[root@web01 mirrors]# htpasswd -b -c /etc/nginx/conf.d/htpasswd oldboy 123456
Adding password for user oldboy
[root@web01 mirrors]# cat /etc/nginx/conf.d/htpasswd
oldboy:33UI8X6r$Lokp5KTNJMgX2rVeMG6I7.
[root@web01 conf.d]# cat mirrors.oldboy.conf
server {
listen 80;
server_name mirrors.oldboy.com;
charset utf-8,gbk;
location / {
root /code/mirrors;
autoindex on;
index index.html;
autoindex_exact_size off;
autoindex_localtime on;
auth_basic "Hello_Linux75";
auth_basic_user_file /etc/nginx/conf.d/htpasswd;
}
location /status {
stub_status;
}
}
使用用户名密码访问网页
curl -uoldboy:123456 mirrors.oldboy.com
第六个模块: 提高安全性 允许和拒绝某个网段
allow 10.0.0.222/32;
deny all;
第七个模块: 显示TCP连接的个数
ngx_http_limit_conn_module
[root@web01 conf.d]# dd if=/dev/zero of=/code/mirrors/1g bs=1M count=1000
第八个模块:
limit_req_zone $remote_addr zone=one:10m rate=1r/s; # 每秒用户只能请求1个
limit_req zone=one burst=5 nodelay; # 延迟处理5个
第九个模块: 限速
limit_rate_after 800M;
limit_rate 200k;