利用nginx服务搭建一个网站
主机名称和IP地址规划
服务 | 主机名 | eth0网卡IP | eth1网卡IP | 软件 |
---|---|---|---|---|
防火墙服务器 | firewalld | 10.0.0.81 | 172.16.1.81 | firewalld |
负载均衡服务器 | lb01 | 10.0.0.5 | 172.16.1.5 | nginx,keepalived |
负载均衡服务器 | lb02 | 10.0.0.6 | 172.16.1.6 | nginx,keepalived |
web服务器 | web01 | 10.0.0.7 | 172.16.1.7 | nginx |
web服务器 | web02 | 10.0.0.8 | 172.16.1.8 | nginx |
web服务器 | web03 | 10.0.0.9 | 172.16.1.9 | nginx |
存储服务器 | nfs01 | 10.0.0.31 | 172.16.1.31 | nfs |
备份服务器 | backup | 10.0.0.41 | 172.16.1.41 | rsync |
数据库服务器 | db01 | 10.0.0.51 | 172.16.1.51 | mysql,mariaDB |
批量管理服务器 | m01 | 10.0.0.61 | 172.16.1.61 | ansible |
跳板机服务器 | jumpserver | 10.0.0.71 | 172.16.1.71 | jumpserver |
监控服务器 | zabbix | 10.0.0.72 | 172.16.1.72 | zabbix |
缓存服务器 | 暂无 | 暂无 | 暂无 | 暂无 |
编写虚拟主机配置文件
- location外面的信息,全局配置信息
- location里面的信息,局部配置信息
vi /etc/nginx/conf.d/www.conf
server {
#监听地址和端口
listen 80;
#主机名
server_name www.1997sty.com;
#主机目录位置
location / {
#站点目录
root /usr/share/nginx/html;
#首页名称
index 1997sty.html;
}
}
需要获取网站代码
vi /usr/share/nginx/html/1997sty.html
<!DOCTYPE html>
<html>
<head>
<title>1997sty</title>
</head>
<body>
<a href="http://blog.1997sty.com">blog.1997sty.com</a>
</body>
</html>
配置域名
- 因为你使用的域名要解析本地的服务器,需要配置hosts文件,并加入以下记录
- windows :
C:\Windows\System32\drivers\etc\hosts
- linux :
/etc/hosts
10.0.0.7 www.1997sty.com
10.0.0.8 www.1997sty.com
10.0.0.9 www.1997sty.com
重启nginx服务
systemctl reload nginx
systemctl restart nginx
nginx -s reload
nginx命令参数
- -t : test configuration and exit(检查测试配置文件语法)
- -s : send signal to a master process: stop, quit, reopen, reload(控制服务停止或者重新启动)
进行测试访问
部署搭建网站常见错误
网站服务配置文件编写不正确
404 错误
- 找不到对象,需要确认配置文件中
location
和root
的指向是否正确 - 站点目录中是否有对于的目录
403 错误
- 不要禁止访问
- 检查
index
配置的首页文件是否存在
DNS信息不正确
- 如果是购买的域名,需要配置正确的地址
- 如果是修改
hosts
文件,需要确认是否配置正确
重启服务
- 修改nginx配置文件后需要重启服务
利用nginx服务搭建多个网站
- 与搭建一个网站方法相同,只需要添加多个配置文件和目录即可
- 访问同一台主机的多个网站优先根据端口访问,其次算hosts信息
网站页面的访问原理
- 将域名进行解析
- 建立TCP的连接(四层协议)
- 根据应用层HTTP协议发出请求
- 没有相同域名的server主机,会找满足端口要求的第一个主机,显示主机的网站页面
企业中虚拟主机访问方式
- 基于域名的方式进行访问
- 基于地址的方式进行访问 负载均衡+高可用服务
- 基于端口的方式进行访问 (zabbix服务和web服务都会用到80端口,会造成冲突)
企业中网站的安全访问配置(黑白名单)
- nginx访问模块: ngx_http_access_module
- 可以写ipv4地址也可以写ipv6,也可以写一个ip段
- allow : 允许访问,也就是白名单
- deny : 禁止访问,也就是黑名单
- Syntax: deny address | CIDR | unix: | all;
- Default: —
- Context: http, server, location, limit_except
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
根据用户访问进行认证
- nginx认证模块: ngx_http_auth_basic_module
location / {
#开启认证功能
auth_basic "closed site";
#加载用户密码文件
auth_basic_user_file conf/htpasswd;
}
编写虚拟主机配置文件
server {
listen 80;
server_name www.1997sty.com;
location / {
root /usr/share/nginx/html;
auth_basic "1997sty";
auth_basic_user_file conf/htpasswd;
index 1997sty.html;
}
}
创建密码文件(文件中密码信息必须是密文的)
- htpasswd : 创建一个有密文信息的密码文件
[root@web01 conf]# pwd
/etc/nginx/conf
[root@web01 conf]# htpasswd -bc htpasswd 1997sty 123456
htpasswd命令参数
- -c : 创建一个密码文件
- -n : 不会更新文件;显示文件内容信息
- -b : 免交互方式输入用户密码信息
- -i : 读取密码采用标准输入方式,并不做检查
- -m : md5加密算法(默认)
- -B : 使用bcrypt对密码进行加密(非常安全)
- -C : 使用bcrypt algorithm对密码进行加密
- -d : CRYPT加密算法
- -s : SHA加密算法
- -p : 不进行加密
- -D : 删除指定用户
- -v : 验证指定用户的密码
修改密码文件信息
- 为了安全起见,修改文件权限为600,文件属主为nginx
chmod 600 ./htpasswd
chown nginx.root ./htpasswd
重启服务后访问
会要求输入正确的用户名和密码
如果linux设置了hosts文件也可以使用curl访问
-u, --user USER[:PASSWORD] Server user and password
#输入命令后输入密码
curl www.1997sty.com -u 1997sty
#输入命令后可以直接访问
curl www.1997sty.com -u oldboy:123456
最后一次更新于2020-01-10 21:28
0 条评论