1、Nginx安装
以centos7为例:
详解博文:Nginx安装搭建之源码方式(Centos7)_centos7源码安装nginx_IT之一小佬的博客-CSDN博客
2、简单搭建站点
2.1 单个站点搭建
正常开放情况下,开发代码防止网站的站点目录中(根目录)
创建代码目录:
或者直接将已经开发好的代码复制到该目录下
往站点目录模拟写内容:
echo study.test.cn > /app/code/study/index.html
修改nginx配置:
在nginx.conf文件中不推荐存放server相关的内容(网站)。
在默认的nginx.conf配置文件下进行修改:
# 添加
include /root/software/Nginx/nginx_install/conf.d/*.conf;
子配置文件:
vim study.test.cn.conf
server {
listen 80;
server_name study.test.cn;
root /app/code/study;
location / {
index index.html;
}
}
修改完配置文件后,检查语法:
重新加载新配置:
./nginx -s reload
网站访问:
本地hosts文件配置-域名访问:
windows系统:修改hosts文件:
Linux系统修改hosts文件:
vim /etc/hosts
2.2 多个站点搭建
在2.1的基础上继续搭建多个站点。
# 创建游戏网站
[root@dgw-machine /]# mkdir -p /app/code/game
[root@dgw-machine /]# echo game.test.cn > /app/code/game/index.html
[root@dgw-machine /]# cat /app/code/game/index.html
game.test.cn
# 创建视频网站
[root@dgw-machine /]# mkdir -p /app/code/video
[root@dgw-machine /]# echo video.test.cn > /app/code/video/index.html
[root@dgw-machine /]# cat /app/code/video/index.html
video.test.cn
修改nginx配置文件:
添加子配置文件:
# vim game.test.cn.conf
server {
listen 80;
server_name game.test.cn;
root /app/code/game;
location / {
index index.html;
}
}
# vim video.test.cn.conf
server {
listen 80;
server_name video.test.cn;
root /app/code/video;
location / {
index index.html;
}
}
修改完配置文件后,检查语法:
重新加载新配置:
./nginx -s reload
网站访问:
目前三个域名网站端口都是使用的80,默认按字母顺序排序展示。
在nginx服务器上配置hosts文件:
127.0.0.1 study.test.cn
127.0.0.1 video.test.cn
127.0.0.1 game.test.cn
网站访问:
3、Nginx虚拟主机配置
3.1 基于域名的虚拟主机配置
上述2.2即为基于域名的主机配置。
配置文件:
域名站点访问:
3.2 基于端口的虚拟主机配置
给网站增加特殊端口,限制用户访问。
修改基于域名的虚拟机配置的三个站点文件的listen 端口号:
修改完配置文件后,检查语法:
重新加载新配置:
./nginx -s reload
网站访问:
注意:下面访问域名后默认还是响应的80端口的内容。
域名需要添加端口号:
这种情况下,除了域名可以访问外,还可以使用IP+端口号进行访问:
查看监听的端口:
ss -lntip | grep nginx
3.3 基于IP的虚拟主机配置
限制用户只能通过某个网卡连接与特殊端口一起使用。
修改配置文件:
# vim video.test.cn.conf
server {
listen 172.25.35.196:8888;
server_name video.test.cn;
root /app/code/video;
location / {
index index.html;
}
}
修改完配置文件后,检查语法:
重新加载新配置:
./nginx -s reload
网站访问:
4、默认站点内容配置
4.1 默认站点内容
基于2.2和3.1操作情况下。如果没有设置默认的虚拟主机,按照虚拟主机文件名排序(同一个端口的),显示第一个。
修改hosts文件:
在未设置默认站点的情况下:
设置默认站点配置文件:
# vim study.test.cn.conf
server {
listen 80 default_server;
server_name study.test.cn;
root /app/code/study;
location / {
index index.html;
}
}
站点访问:
4.2 默认站点错误内容提示
设置默认站点配置文件:
# vim study.test.cn.conf
server {
listen 80 default_server;
server_name _;
default_type text/plain;
return 200 "禁止访问网站";
}
访问网站:
调整中文乱码问题:
server {
listen 80 default_server;
server_name _;
charset utf8;
default_type text/plain;
return 200 "禁止访问网站";
}
5、autoindex网站列表功能
建立下载代码目录:
mkdir -p /app/code/download
创建index.html文件:
echo welcome download > /app/code/download/index.html
配置下载功能子配置文件:
vim download.test.cn.conf
server {
listen 80 default_server;
server_name download.test.cn;
root /app/code/download;
location / {
index index.html;
}
}
检查nginx语法并重启:
页面访问:
从上面页面访问结果可以看出,此时未开启下载功能。
开启下载功能:
修改nginx子配置文件:
server {
listen 80 default_server;
server_name download.test.cn;
root /app/code/download;
autoindex on;
location / {
index index.html;
}
}
创建下载文件:
touch /app/code/download/download{01..10}.html
注意:加上autoindex后,要想让页面显示目录下载格式,需要使index.html文件不存在。rm index.html。
再次访问页面:
注意:上面页面访问时,显示的是UTC时间,需要加autoindex_localtime显示本地时间。
再次修改子配置文件:
server {
listen 80 default_server;
server_name download.test.cn;
root /app/code/download;
autoindex on;
autoindex_localtime on;
location / {
index index.html;
}
}
检查语法重启后,再次访问页面:
6、限制模块
访问增加些限制:只让某些用户访问(白名单),禁止一些用户访问(黑名单)。
修改配置子文件:
server {
listen 80 default_server;
server_name download.test.cn;
root /app/code/download;
autoindex on;
autoindex_localtime on;
allow 12.24.237.6;
deny all;
location / {
index index.html;
}
}
注意:可以写ip段。如:172.10.1.0/24
查看访问日志:
allow和deny位置:
注意:deny all一定要放在最下方!
7、认证模块
用户访问网站或指定页面/路径要输入用户名和密码。
创建用户名和密码:
mkdir -p /app/nginx/key
htpasswd -bc /app/nginx/key/user_password test_name 123456
cat /app/nginx/key/user_password
修改用户密码文件的用户组:
注意:这一步是否需要操作,取决于nginx.conf配置文件中使用的用户组。
chown nginx /app/nginx/key/user_password
修改nginx子配置文件:
server {
listen 80 default_server;
server_name download.test.cn;
root /app/code/download;
autoindex on;
autoindex_localtime on;
# allow 12.244.237.60;
# deny all;
location / {
index index.html;
}
location /vip {
auth_basic "please input username password";
auth_basic_user_file /app/nginx/key/user_password;
}
}
创建vip目录文件:
[root@dgw-machine logs]# mkdir -p /app/code/download/vip
[root@dgw-machine logs]# touch /app/code/download/vip/vip_{01..10}.html
[root@dgw-machine logs]# ll /app/code/download/vip/
检查语法重启后,访问页面:
8、状态模块
用于内部统计、收集、监控nginx状态使用。使用stub_status字段。
修改nginx子配置文件:
server {
listen 80 default_server;
server_name download.test.cn;
root /app/code/download;
autoindex on;
autoindex_localtime on;
# allow 12.244.237.60;
# deny all;
location / {
index index.html;
}
location /vip {
auth_basic "please input username password";
auth_basic_user_file /app/nginx/key/user_password;
}
location /status {
stub_status;
allow all;
deny all;
}
}
检查语法重启后,访问页面:
通过检查语法发现,确实相应的模块。
首先检查已经安装的模块:
添加stub_status模块,找到之前安装包,重新编译安装:
./configure --prefix=/root/software/Nginx/nginx_install --with-http_stub_status_module
安装完检查已安装的模块:
检查语法重启后,访问页面:
注意:重新编译安装后,一定要先kill掉之前的nginx进程,否则下面访问可能不能生效!
8、location功能
注意:location的格式、匹配规则(符号)、规则的优先级、应用场景