nginx配置文件的详解
nginx作为一个反向代理器和负载均衡器,它的优点体现在许多方面,我们先从配置文件入手,看看nginx可以实现的功能:在有nginx服务的机器中做
虚拟主机技术主要应用于HTTP(Hypertext Transfer Protocol,超文本传输协议)服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。
cd /usr/local/lnmp/nginx/conf
vim nginx.conf ##设置虚拟服务器##在大括号里面加
server{
listen 80;
server_name www.westos.org;
location / {
root /www1;
index index.html;
}
}
server{
listen 80;
server_name bbs.westos.org;
location / {
root /www2;
index index.html;
}
}
mkdir /www1
vim /www1/index.html (www.westos.org)
mkdir /www2
vim /www2/index.html (bbs.westos.org)
nginx -t
nginx -s reload
去真迹里面看解析
vim /etc/hosts
172.25.254.1 www.westos.org bbs.westos.org
curl www.westos.org
curl bbs.westos.org ##虚拟机的轮询
如何设置为https模式
cd /usr/local/lnmp/nginx/conf/
vim nfinx.conf ##打开https有关的东西
server {
listen 443 ssl;
server_name www.westos.org;
ssl_certificate cert.pem;
ssl_certificate_key cert.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /www1;
index index.html index.htm;
}
}
pwd /usr/local/lnmp/nginx/conf
##做证书
cd /etc/pki/
ls
cd tls
ls
cd certs
ls###Makefile是做证书的文件
make cert.pem(cn,shaanxi,xa"an,westos,linux,server1,[email protected])
ls
ll cert.pem
cp cert.pem /usr/local/lnmp/nginx/conf
nginx -t
nginx -s reload
在真迹测试: https://www.westos.org ##进去是加密文件
nginx的重定向
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
server{
listen 80;
server_name www.westos.org ;
rewrite ^/(.*)$ https://www.westos.org permanent;
location / {
root /www1;
index index.html;
}
}
nginx -s reload
不加permanent 是临时加载302,加permanent 是永久加载301;
在真迹里面测试:curl -I www.westos.org##可以看见重定向到
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
server{
listen 80;
server_name www.westos.org ;
rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
location / {
root /www1; ##底下4行可以注释调
index index.html;
}
}
nginx -s reload
在真迹里面测试:curl -I www.westos.org/index.html##可以看见重定向到相应的位置https://www.westos.org/index.html
www.westos.org和westos.org访问的是同一个地方
server{
listen 80;
server_name www.westos.org westos.org ;
rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
location / {
root /www1; ##底下4行可以注释调
index index.html;
}
}
nginx -s reload
如果是www.westos.org/bbs重定向到http://bbs.westos.org;
server{
listen 80;
server_name www.westos.org westos.org ;
rewrite ^/bbs$ https://bbs.westos.org permanent;
location / {
root /www1; ##底下4行可以注释调
index index.html;
}
}
nginx -s reload ##每次改完配置文件后,一定记得要加载服务
在真迹里面测试:curl -I www.westos.org/bbs##可以看见重定向到相应的位置https://bbs.westos.org
如果是www.westos.org/bbs/**可以重定向到http://bbs.westos.org/***
server{
listen 80;
server_name www.westos.org westos.org ;
rewrite ^/bbs$ https://bbs.westos.org permanent;
rewrite ^/bbs/(.*)$ https://bbs.westos.org/$1;
location / {
root /www1; ##底下4行可以注释调
index index.html;
}
}
nginx -s reload
在真迹里面测试:curl -I www.westos.org/bbs/index.html##可以看见重定向到相应的位置https://bbs.westos.org/index.html
如果访问bbs.westos.org的时候,重定向到www.westos.org/bbs里
cd /www1
mkdir bbs
ls
cd bbs
vim index.html (www.westos.org-bbs)
server{
listen 80;
server_name www.westos.org westos.org bbs.westos.org;
if ($host = "bbs.westos.org") {
rewrite ^/(.*)$ http://www.westos.org/bbs;
}
location / {
root /www1;
index index.html;
}
}
nginx -s reload
在真机中测试,curl -I bbs.westos.org
重定向到http://www.westos.org/bbs
打开浏览器可以看见的更清晰
bbs.westos.org ##可以看见www.westos.org-bbs ##记得要把index.php注销
限定用户访问
将server里面的localtion 改为_
server {
listen 80;
server_name _;
return 500;
location / {
root html;
index index.html index.htm;
}
nginx -s reload
打开浏览器172.25.254.11 可以看见被拒绝了
不直接拒绝,进行重定向
server {
listen 80;
server_name _;
rewrite ^(.*) http://www.westos.org;
location / {
root html;
index index.html index.htm;
}
nginx -s reload
打开浏览器172.25.254.11 可以看见被重定向了或者curl -I 172.25.254.11
允许和拒绝用户
在虚拟主机中做
server{
listen 80;
server_name www.westos.org westos.org bbs.westos.org;
if ($host = "bbs.westos.org"){
rewrite ^/(.*)$ http://www.westos.org/bbs;
}
location / {
root /www1;
index index.html;
allow 172.25.17.0/24; ##允许172.25.17网端的访问,其他的拒绝;
deny all;
}
}
nginx -s reload;
在不同的网端访问,可以看见一个是200 ok ,一个是403 拒绝的;
curl -I www.westos.org
记得要给虚拟机和真机加解析,不同网端的也要加解析
照片之类的拒绝访问
cd /www1
mkdir images
cd images
里面放一张照片 l
在虚拟访问里面加
location ~ ^/images/.*\.(jpg|gif)${
deny all; 模版在最后
}
nginx -s reload
测试在真机 curl -I www.westos.org/images/vim.jpg ##发现是403被拒绝了
下载之类的访问
mkdir /www1/download
cd /www1/download
cp /www1/images/vim.jpg .
在虚拟访问里面加
location /download/ {
root /www1;
limit_conn addr 1; ##并发量为1
limit_req zone=one burst=5; #一次性执行5个,每个执行一秒;
limit_rate 50k; ##下载的速度为50k;
}
将下面这句话写在#gzip on;下边
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
nginx -s reload
在真机压力测试
ab -c 1 -n 10 http://www.westos.org/download/vim.jpg
-c 代表并发量 -n 代表执行任务的次数
在虚拟主机中查看日志
cat /usr/local/lnmp/nginx/logs/access.log ##看日志有没有报错
ab -c 5 -n 10 http://www.westos.org/download/vim.jpg
在虚拟主机中查看日志
cat /usr/local/nginx/logs/access.log ##看日志有没有报错,发现只有一个访问到了,其余4个没有访问到,因为我们设置的并发量为1
我们给访问的加时间限制
在给访问照片的加时间限制,去掉拒绝所有;
location ~ ^/images/.*\.(jpg|gif)$ {
expires 30d;
root /www1;
}
nginx -s reload
测试在真机 curl -I www.westos.org/images/vim.jpg ##可以看见时间限制
使他支持中文,发送文件的限制
在虚拟主机中做
在server俩面加 charset utf-8;
server{
listen 80;
server_name www.westos.org westos.org bbs.westos.org;
charset utf-8;
nginx -s reload
我门打开 sendfile on;
tcp_nopush on;
tcp_nodelay on; ##这是发送文件的时候没有延迟的设定
nginx -s reload
vim /www1/index.html 里面加入中文,方便测试
在真机测试 www.westos.org ##可以看见有中文,如果出现乱码,可能你没有加载服务,加载完成之后,记得清理浏览器缓存,
ctrl+shift+delete 键去清除缓存
盗链的应用
另开一台虚拟机
yum install -y httpd
/etc/init.d/httpd start
cd /var/www/html/
ls
vim index.html
<html>
<body>
<br>图片</br>
<img src="http://www.westos.org/images/vim.jpg">
</body>
</html>
在真机中解析中加入解析
虚拟机的位置加入 daolian.westos.org
测试在真机中
daolian.westos.org ##可以看见图片
##防盗链的设置
在图片的位置加入防盗链的设置
location ~ ^/images/.*\.(jpg|gif)$ {
expires 30d;
root /www1;
valid_referers none blocked www.westos.org;
if ($invalid_referer) {
return 403;
}
}
nginx -s reload
测试在真机中
daolian.westos.org ##可以看见照片裂开了,不可看
盗链的链接
在图片的位置加入防盗链的设置
location ~ ^/images/.*\.(jpg|gif)$ {
expires 30d;
root /www1;
valid_referers none blocked www.westos.org;
if ($invalid_referer) {
# return 403;
rewrite ^/(.*)$ http://bbs.westos.org/daolian.jpg;
}
}
nginx -s reload
把添加的域名删了关于bbs的
server_name www.westos.org westos.org ;
同时取消注释
使bbs的域名显示出来
server {
listen 80;
server_name bbs.westos.org;
location / {
root /www2;
index index.html;
}
}
同时下载盗链图片
把图片放在/www2里面
cd /www2
ls 有daolian.jpg