Linux-LNMP(静态元素不记录日志和过期时间,防盗链,解析php,代理,支持ssl)
Linux-LNMP-Nginx配置二
- 静态文件不记录日志和过期时间
- Nginx防盗链
- Nginx访问控制
- Nginx解析php相关配置
- Nginx代理
- Nginx负载均衡
- SSL原理
- 生成SSL密钥对
- Nginx配置SSL
静态文件不记录日志和过期时间
在Nginx服务器的虚拟主机配置文件(/usr/local/nginx/conf/vhost/norecord.conf)中定义
vim /usr/local/nginx/conf/vhost/norecord.conf
文件内容如下:
server
{listen 80; server_name www.norecord.com;index index.html index.htm index.php;root /data/wwwroot/norecord;location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 7d;access_log off;}access_log /tmp/norecord.log combined_realip;
}
创建测试目录,测试文件
mkdir -p /data/wwwroot/norecord
cd /data/wwwroot/norecord/
echo "record_log" > index.html
rz //从本地上传一张123.jpg图片文件到当前目录下
查看图片和文件
检测语法,加载配置文件
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
测试
curl -x127.0.0.1:80 www.norecord.com www.norecord.com/123.jpg -I
有这要的标志(有7天的时间限制)
查看日志
cat /tmp/norecord.log
发现访问图片没有记录日志
Nginx防盗链
实验:仅允许来自这个Referer(https://blog.51cto.com/13480443/2074160) 的链接访问Nginx服务器的www.burglar.com 下以.(gif|jpeg|png|bmp|swf)结尾的文件并且不记录日志
配置虚拟主机
server
{listen 80;server_name www.burglar.com;index index.html index.htm index.php;root /data/wwwroot/burglar;location ~* ^.+\.(gif|jpg|jpeg|png|bmp|swf)${expires 7d;valid_referers server_names "blog.51cto.com/13480443/2074160";if ($invalid_referer){return 403;}access_log off;}access_log /tmp/burglar.log combined_realip;}
valid_referers none blocked server_name *.test.com //表示匹配空referer或以.test.com结尾的referer
Nginx访问控制
限制某个来源ip访问Nginx服务器上的某个目录
server
{listen 80; server_name www.accesscontrol.com www.accesscontrol1.com www.accesscontrol2.com;index index.html index.htm index.php;root /data/wwwroot/accesscontrol;location /admin/{ allow 192.168.221.20;allow 127.0.0.1;deny all;}
}
限制某些来源ip访问Nginx服务器上的某个文件
location ~ .*(upload|image)/.*\.php${deny all;}
可以根据user_agent来进行限制(~ 匹配区分大小写,~* 匹配不区分大小写)
if ($http_user_agent ~* 'Mozilla|curl|Spider/3.0|YoudaoBot|Tomato' ){return 403;}
Nginx是从上往下进行匹配的,如果匹配到就不再往下匹配
Nginx解析php相关配置
vim /usr/local/nginx/conf/vhost/analysis.conf
server{listen 80;server_name www.analysis.com www.analysis1.com www.analysis2.com;index index.html index.htm index.php;root /data/wwwroot/analysis;location ~ \.php$ {include fastcgi_params;fastcgi_pass unix:/tmp/php-fcgi.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /data/wwwroot/analysis$fastcgi_script_name;} }
如果下面这行写错了,就会显示返回状态码502(找不到/tmp/php-fcgi.sock)
查询错误日志(/usr/local/nginx/logs/nginx_error.log)
查询php配置文件中定义的"listen"
grep listen /usr/local/php-fpm/etc/php-fpm.conf
listen = /tmp/php-fcgi.sock
listen.mode = 666
如果将php-fpm服务监听ip,重新加载php-fpm服务
vim /usr/local/php-fpm/etc/php-fpm.conf
listen=127.0.0.1:9000
/etc/init.d/php-fpm reload
再次访问还是返回状态码502
将nginx虚拟主机的配置文件改为监听ip和端口的形式
vim /usr/local/nginx/conf/vhost/analysis.conf
fastcgi_pass 127.0.0.1:9000;
检测Nginx配置文件的语法错误,重新加载配置文件,就ok了。
如果将/usr/local/php-fpm/etc/php-fpm.conf文件中的listen.mode = 666注释了,php配置文件与nginx虚拟主机中定义都是sock的,则监听的文件/tmp/php-fcgi.sock的默认权限为660,访问时返回的状态码依然是502
查看错误日志
临时将/tmp/php-fcgi.sock文件中的属主改为nobody,访问又ok了
chown nobody /tmp/php-fcgi.sock
Nginx代理
在代理服务器上作如下设置
vim /usr/local/nginx/conf/vhost/proxy.conf
server
{listen 80;server_name www.qq.com;location /{proxy_pass http://182.254.74.167/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
测试
curl -x127.0.0.1:80 www.qq.com
Nginx负载均衡
dig命令
yum install bind-utils -y
dig baidu.com //返回了三个ip
配置文件中定义
vim /usr/local/nginx/conf/vhost/balance.conf
upstream baidu
{ip_hash;server 111.13.101.208;server 220.181.57.216;server 123.125.114.144;
}
server
{listen 80;server_name www.baidu.com;location /{proxy_pass http://baidu;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
curl -x127.0.0.1:80 www.baidu.com
SSL原理
客户端发送https请求给服务器。
服务器有一套证书(公钥和私钥),将公钥传递给客户端
客户端收到公钥后,验证合法性,无效则会警告提醒,有效则会生成一串随机字符,用公钥加密码随机字符传递给服务器
服务器用自己的私钥解密,得到明文的字符串,用字符串加密数据传给客户端
客户端用自己的字符串解密得到明文数据。
生成SSL密钥对
openssl genrsa -des3 -out tmp.key 2048 //输入复杂密码2次,tmp.key为私钥
openssl rsa -in tmp.key -out apeng.key //输入上面的密码一次,转换key,取消密码
rm -f tmp.key
openssl req -new -key apeng.key -out apeng.csr //生成证书请求文件apeng.csr
openssl x509 -req -days 365 -in apeng.csr -signkey apeng.key -out apeng.crt //apeng.csr和私钥apeng.key生成apeng.crt公钥
Nginx配置SSL
vim /usr/local/nginx/conf/vhost/ssl.conf
server
{listen 443;server_name www.ssl.com;index index.html index.htm index.php;root /data/wwwroot/ssl;ssl on;ssl_certificate apeng.crt;ssl_certificate_key apeng.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;location ~ \.php${include fastcgi_params;fastcgi_pass unix:/tmp/php-fcgi.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /data/wwwroot/ssl$fastcgi_script_name;}
}
重新编译nginx
./configure --help|grep -i ssl
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make && make install
/etc/init.d/nginx restart
netstat -tlnp
mkdir -p /data/wwwroot/ssl
echo "ssl" > /data/wwwroot/ssl/index.html
vim /etc/hosts
192.168.221.20 www.ssl.com
curl https://www.ssl.com
curl: (60) Peer's certificate issuer has been marked as not trusted by the user.
More details here: http://curl.haxx.se/docs/sslcerts.htmlcurl performs SSL certificate verification by default, using a "bundle"of Certificate Authority (CA) public keys (CA certs). If the defaultbundle file isn't adequate, you can specify an alternate fileusing the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented inthe bundle, the certificate verification probably failed due to aproblem with the certificate (it might be expired, or the name mightnot match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, usethe -k (or --insecure) option.
浏览器访问
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
转载于:https://blog.51cto.com/13480443/2074160
相关文章:
mysql数据库优化命令_MySQL数据库优化总结
一个:MySQL标准数据库优化注意事项1.数据库设计(表设计合理)三范式(规范的模式)三范式包含:第一范式:1NF是对属性的原子性的约束。要求属性具有原子性,不可再分解。(仅仅要是关系型数据库都满足)第二范式:2NF是记录的唯…

C++ 卸载程序
目的:用C写一个自己的卸载程序来完成程序的卸载工作,同时运行后要删除卸载程序本身,并删除卸载程序所在的文件夹。 注:在程序退出的时候写上 自己的卸载代码。 // FileName: Uninstall.h #pragma onceclass CUninstall { private:…

《火星救援VR》原班人马打造全新AR游戏,让可爱小飞龙伴随你左右
曾开发了《火星救援》的VR团队即将发布AR游戏《Follow Me Dragon》,让可爱小飞龙“融入”真实世界。 开发商The Virtual Reality Company曾经打造过风靡一时的《火星救援》VR游戏。今日,他们刚刚发布了一款名为《Follow me Dragon》的AR游戏。 目前&…

【组队学习】【30期】时间序列分析
时间序列分析 航路开辟者:李岳昆、易远哲领航员:王洲烽航海士:李岳昆、易远哲 基本信息 开源内容:https://github.com/datawhalechina/team-learning-data-mining/tree/master/TimeSeries内容属性:打磨课程内容说明…

mysql二进制日志管理_MYSQL二进制日志管理脚本
MYSQL二进制日志管理脚本脚本原理是每小时对进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:#!/bin/bash#Purpose:管理二进制日志,每小时刷新二进制日志,并将日志复制到nfs服务器上,方便以…

iPhone App开发实战手册学习笔记(5)之IOS常用机制
1 前言 在IOS开发中,相信大家一定听说过委托,数据源,target,action等等,今天我们就来简单的学习一下这些内容。 2 详述 2.1 委托和数据源 大家是否曾经有不知道如何去执行一项任务的时候?或许是修理一台洗碗…

Datawhale组队学习周报(第035周)
希望开设的开源内容 目前Datawhale的开源内容分为两种:第一种是已经囊括在我们的学习路线图内的Datawhale精品课,第二种是暂未囊括在我们的学习路线图内的Datawhale打磨课。我们根据您的投票来确定精品课程的排期,打磨课程一旦完成ÿ…

【Project Euler】530 GCD of Divisors 莫比乌斯反演
【题目】GCD of Divisors 【题意】给定f(n)Σd|n gcd(d,n/d)的前缀和F(n),n10^15。 【算法】莫比乌斯反演 【题解】参考:任之洲数论函数.pdf 这个范围显然杜教筛也是做不了的,而且考虑直接化简f(n)也遇到了困难,所以考虑将前缀和的…

php mysql 星级评分_jQuery+PHP实现星级评分
本例实现的效果:过渡动画显示评分操作。及时更新平均得分和用户所评的分数。后台限制用户重复评分操作,并在前端及时显示。XHTMLHTML结构分为用于显示灰星星div#big_rate、亮星星div#big_rate_up、分数span#s及span#g和提示信息div#my_rate。CSS.rate{wi…

Xt800、DEFY自带号码归属地更新包,更新至2013.4【数据总数278360条】
总结了http://bbs.gfan.com/forum.php?modviewthread&tid5603346&extrapage%3D1&page1和http://bbs.mfunz.com/thread-706813-1-1.html,经测试在我的XT800上可用,可以把其他的第三方来电软件通通删掉了。 特点:能够显示运营商&a…

中国电子学会图形化四级编程题:程序优化
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…

当代艺术遇上虚拟现实:幻境视界打造基业VR美术馆
VR展览也许并不少,但专业的艺术展却难得一见。幻境世界周志强希望能借助VR技术,实现“一地办展、全球同展、永不闭馆”,更好地传播当代艺术。 从米开朗琪罗到库尔贝,再到雷诺阿,大师们不断找到新的艺术语言来阐释人体…

python二叉搜索树建立_700. 二叉搜索树的搜索(Python)
题目难度:★☆☆☆☆类型:二叉树给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树:4/ \2 7/ \1 3和值: 2你应该返回…

CF484E Sign on Fence
题意 给定一个长度为n的数列,有m次询问,询问形如l r k 要你在区间[l,r]内选一个长度为k的区间,求区间最小数的最大值 Sol 二分答案 怎么判定,每种数字开一棵线段树 某个位置上的数大于等于它为1 那么就是求区间最大的1的序列长度大…

【组队学习】【30期】吃瓜教程——西瓜书+南瓜书
吃瓜教程——西瓜书南瓜书 航路开辟者:谢文睿、秦州领航员:邱振波航海士:谢文睿、秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-bookB 站视频:https://www.bilibili.com/video/BV1Mh411e7VU内…

如何破解压缩文件密码-省时省力的方法
压缩文件破解工具下载地址:http://www.cnblogs.com/spring_wang/archive/2013/06/14/3135163.html 应该很多人都碰到过RAR加密、解密的问题吧。简单给大家介绍下如何用工具来破解RAR密码!我们所利用的工具,就是“ARPR”、相信有些人肯定知道。…

学完javase和mysql_Java基础学完接下来应该学什么呢?
谢谢邀请!Java基础部分涵盖了类、对象、属性和方法四大概念,以及封装、继承、多态的理解及使用。Java基础部分是Java学习过程中相对来说比较难的部分,Java语言属于开头难,之后越学越简单的语言。基础部分要清晰Java面向对象的开发…

Linux文件分割与合并:splitcat(转载)
转自:http://os.51cto.com/art/201104/255359.htm Linux下文件分割可以通过split命令来实现,而用cat进行文件合并。而分割可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。 在Linux下用split进行文…

【组队学习】【30期】李宏毅机器学习(含深度学习)
李宏毅机器学习(含深度学习) 航路开辟者:王茂霖、陈安东,刘峥嵘,李玲领航员:初晓宇航海士:王茂霖 基本信息 开源内容:https://github.com/datawhalechina/leeml-notes开源内容&am…

mac下用Dosbox搭建dos下的汇编环境
安装Dosbox,下载地址 pan.baidu.com/s/1qZfgGc0 安装汇编编译器,下载masm pan.baidu.com/s/1c4k5fCc,在个人目录下新建 ~/Dosbox目录,把masm拷贝到Dosbox目录中 设置Dosbox autoexec, 编辑~/Library/Preferences/DOSBox\ 0.74\ …

java线程安全的set_Java并发编程之set集合的线程安全类你知道吗
Java并发编程之-set集合的线程安全类Java中set集合怎么保证线程安全,这种方式你知道吗?在Java中set集合是本篇是《凯哥(凯哥并发编程学习》系列之《并发集合系列》教程的第二篇:本文主要内容:Set集合子类底层分别是什么࿱…
亮剑.NET的系列文章之.NET实现三层架构(三)
最近一直在学习三层架构,前些天同样也写了一篇同样的博客,今天主要是通过一个登录的实例给大家讲解每部分的作用和相应代码的实现。先将实现三层架构的UML图给大家,帮助大家更好的理解三层。1. UI作用 (1) 向用户展示特定业务数据…

【组队学习】【30期】6. 树模型与集成学习
树模型与集成学习 航路开辟者:耿远昊领航员:姜萌航海士:耿远昊 基本信息 开源内容:https://github.com/datawhalechina/machine-learning-toy-code内容属性:打磨课程内容说明:本课程将对机器学习中的集成…

mysql整理碎片和显示语句错误
2019独角兽企业重金招聘Python工程师标准>>> 1、myisam存储引擎清理碎片方法 OPTIMIZE TABLE table_name 2、innodb存储引擎清理碎片方法 ALTER TABLE tablename ENGINEInnoDB 3、查看表碎片的方法 select ROW_FORMAT,TABLE_ROWS…

java 查询 代码_java使用es查询的示例代码
众所周知,elasticsearch简称es,它是基于基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索…

【转】解密“设计模式”
有些人问我,你说学习操作系统的最好办法是学习程序设计。那我们是不是应该学习一些“设计模式”(design patterns)。这是一个我很早就有定论,而且经过实践检验的问题,所以想在这里做一个总结。 总的来说,如…

Qt Installer Framework实战
Qt Installer Framework是Qt发布的安装程序支持框架,只需要简单的配置就可以生成安装文件,同时可以通过javascript脚本来定制安装过程。 目录结构 config packages data meta 配置文件 config/config.xml packages/[product]/meta/package.xml packages/…
【NCEPU】徐韬:街景字符编码识别比赛
徐韬是华北电力大学数理系大四的学生,Datawhale成员/Dreamtech成员,参加了多期Datawhale的组队学习,也在天池/CCF/讯飞等比赛中取得了不错的成绩,现保送大连理工大学深造。 这篇图文是他在线下组队学习时,为大家分享自…

java 程序启动界面_程序启动界面java代码
最近写了个程序启动界面,分享一下import javax.swing.*;import java.awt.*;import java.net.*;//Download by http://www.codefans.net//程序启动界面/*dkplus专业搜集和编写实用电脑软件教程,*搜集各种软件资源和计算机周边,独立制作视频和p…

中国电子学会图形化四级编程题:食堂取餐
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…