Nginx服务优化与防盗链
目录
1.隐藏nginx版本号
1.查看版本号
2.隐藏版本信息
2.修改用户与组
3.缓存时间
4.日志分割
5.连接超时
6.更改进程数
7.网页压缩
8.配置防盗链
1.配置web源主机(192.168.156.10 www.lhf.com)
2.配置域名映射关系
3.配置盗链主机 (192.168.156.110 www.dao.com)
4.在web源主机(192.168.52.210 www.zhuo.com)中配置防盗链
1.隐藏nginx版本号
1.查看版本号
方法一:curl 命令
可以在 CentOS 中使用命令 curl -I http://192.168.156.140
显示响应报文首部信息.
curl -I http://192.168.156.140
方法二:在网页中查看
1. #切换至html目录,拖一个图片进去
cd /apps/nginx/html
2. #在网页中查看
http://192.168.156.140/3.#打开浏览器访问IP地址,然后按F12,打开查看
2.隐藏版本信息
方法一:修改配置文件
1.#修改配置文件
vim /apps/nginx/conf/nginx.conf2.#重启nginx
systemctl restart nginx3.#查看版本是否被隐藏
curl -I http://192.168.156.10
http {include mime.types;default_type application/octet-stream;server_tokens off; #添加,关闭版本号......
}
方法二: 修改源码文件,重新编译安装
1. #切换至nginx安装包所在目录
cd /opt/
2. #停止nginx服务
systemctl stop nginx.service
3. #切换至安装目录
cd nginx-1.18.0/
4. #切换至内核目录
cd src/core/
5. #进入配置文件
vim nginx.h
#define NGINX_VERSION "yxp"
#define NGINX_VER "yyy/" NGINX_VERSION
6. #切换至文件目录
cd ../../
7. #编译
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
8. #安装
make && make install -j4
9. #将配置文件下的之前关闭版本信息开启
vim /apps/nginx/conf/nginx.conf
server_tokens on;
10. #重启nginx
systemctl restart nginx
11. #查看版本信息
curl -I http://192.168.156.10
2.修改用户与组
1. #修改配置文件
vim /apps/nginx/conf/nginx.conf
user lhf lhf; #取消注释,修改用户为 lhf ,组为 lhf
2. #创建非登录用户
useradd -s /sbin/nologin lhf
3. #重启服务
systemctl restart nginx
4. #查看是否修改成功
ps aux | grep nginx
3.缓存时间
当nginx将网页数据返回给客户端后,可设置缓存时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度一般针对静态网页设置,对动态网页不设置缓存时间。
1. #修改配置文件
vim /apps/nginx/conf/nginx.conf#添加以下内容location ~ \.(jpg|png|bmp|gif)$ {root html;expires 1d;}
2. #查看是否有语法错误
nginx -t
3. #重启服务
systemctl restart nginx.service
4.#在网页中查看服务
http://192.168.156.10/2.png
Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。
4.日志分割
随着Nginx运行时间的增加,产生的日志也会逐渐增加,为了方便掌握Nginx的运行状态,需要时刻关注Nginx日志文件。太大的日志文件对监控是一个大灾难,不便于分析排查,需要定期的进行日志文件的切割。
1. #写脚本
vim /apps/nginx/nginx_log.sh
#!/bin/bash
#this is for divide nginx log
d=$(date +%F -d -1day) #显示前一天的时间
path="/var/log/nginx"
pid="/apps/nginx/logs/nginx.pid"
[ -d $path ] ||mkdir -p $path #创建日志文件目录
mv /apps/nginx/logs/access.log ${path}/www.yxp.com-$d #移动并重命名日志文件 kill -USR1 $(cat $pid) #重建新日志文件
find $path -mtime +30 -delete #删除30天之前的日志文件
2. #赋予权限
chmod +x /apps/nginx/nginx_log.sh
3. #计划任务
[root@localhost nginx]#crontab -e
30 1 * * * /apps/nginx/nginx_log.sh
扩展小知识
在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime
ctime(status time): 当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time, 只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。
atime(accesstime): 当使用这个文件的时候就会更新这个时间。
mtime(modification time): 当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。
5.连接超时
HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。
keepalive_timeout
指定KeepAlive的超时时间(timeout)。指定每个TCP连接最多可以保持多长时间,服务器将会在这个时间后关闭连接。 Nginx的默认值是65秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为0,就禁止了keepalive 连接。
第二个参数(可选的)指定了在响应头Keep-Alive:timeout=time中的time值。这个头能够让一些浏览器主动关闭连接,这样服务器就不必去关闭连接了。没有这个参数,Nginx 不会发送 Keep-Alive 响应头。
client_header_timeout
客户端向服务端发送一个完整的 request header 的超时时间。如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。
client_body_timeout
指定客户端与服务端建立连接后发送 request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)。
#修改配置文件
vim /apps/nginx/conf/nginx.conf
-----------------------------------
http {
...... keepalive_timeout 65 180;client_header_timeout 80;client_body_timeout 80;
......
}
------------------------------------#重启nginx服务
systemctl restart nginx.service
#在网页中测试
192.168.156.10
6.更改进程数
在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞。
网段一瞬间,比如:淘宝;一瞬间请求过多时,cpu会 负载,这时就需要增加CPU工作个数,每个CPU可以处理多少个最大文件数调高,worker_processes*worker_connections 等于它的同一时间段最多可以有多少台机器来访问。
//配置文件优化以及内核优化
1. #统计cpu核数
cat /proc/cpuinfo |grep processor|wc -l
或
cat /proc/cpuinfo |grep -c processor
2. #查看目前有的核数
ps -aux |grep nginx
3. #修改 Nginx 的配置文件worker_processes 参数,一般设为 CPU 的个数或者核数,
在高并发的情况下可设置为 CPU 个数或者核数的 2 倍,可以查看 CPU 的核数以确定参数。
vim /apps/nginx/conf/nginx.conf
worker_processes 2;
worker_cpu_affinity 01 10; 设置每个进程由不同的cpu处理,计算机是二进制语言,01(1),10(2)
//内核优化、做亲和度、指定2个/4个线程,怎么使用CPU内核,目的是让CPU的内核压力均衡events {worker_connections 4096;
}4.更该系统的处理线程的最大数
ulimit -a #查看
ulimit -n 60000 #更改为60000
5. #重启服务并查看
systemctl restart nginx.service
ps -aux |grep nginx
1.统计cpu核数
2. 查看目前有的核数
3.修改 Nginx 的配置文件
4.重启服务和验证进程
7.网页压缩
1.Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能;
2.允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装可在配置文件中加入相应的压缩功能参数对压缩性能进行优化。
1. #修改配置文件gzip on; #取消注释,开启gzip压缩功能gzip_min_length 1k; #最小压缩文件大小gzip_buffers 4 16k; #压缩缓冲区,大小为4个16k缓冲区gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)gzip_comp_level 6; #压缩比率gzip_vary on; #支持前端缓存服务器存储压缩页面gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json; #压缩类型,表示哪些网页文档启用压缩功能
2. #重启服务
systemctl restart nginx.service
3. #网页查看
http://192.168.156.10/2.png
8.配置防盗链
1.在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用
,造成经济损失,也避免了不必要的带宽浪费。
2.Nginx 的防盗链功能也非常强大,在默认情况下,只需要进行很简单的配置,即可实现防盗链处理。
1.配置web源主机(192.168.156.10 www.lhf.com)
(1)安装nginx服务并配置被盗链图片
#导入图片2.gif
准备一张图片 改名为2.gif#切换目录
cd /apps/nginx/html/#上传图片
rz -E#编辑主页文件
vim index.html
-------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title></head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
<img src="2.gif"/> #插入添加此行-------------------------------------------------------
#检查和重启服务
nginx -t
systemctl restart nginx#验证
火狐输入
192.168.156.10
2.配置域名映射关系
#修改主机名和IP配置文件
vim /etc/hosts
--------------------------------------------------
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.156.10 www.lhf.com #添加此行#关闭防火墙并重启服务
systemctl stop firewalld.service
setenforce 0
systemctl restart nginx
3.配置盗链主机 (192.168.156.110 www.dao.com)
(1)安装apache服务并配置盗链主页
#安装apache服务
yum install httpd -y #配置盗链主页
vim /var/www/html/index.html
---------------------------------------------
<html>
<body>
<h1>盗链</h1>
<img src="http://www.lhf.com/2.gif"/> #图片链接地址通过浏览器访问http://www.lhf.com 所得图片地址
</body>
</html>
(2) 设置域名映射
vim /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.156.10 www.lhf.com
192.168.156.110 www.dao.com
(3)重启服务并测试
#关闭防火墙并重启服务
systemctl stop firewalld.service
setenforce 0
systemctl restart httpd#在盗链主机(192.168.156.110 )的浏览器中输入盗链主机的域名
打开火狐输入
192.168.156.10 或 www.lhf.com
和
192.168.156.110 或 www.dao.com
验证是否被盗链
4.在web源主机(192.168.52.210 www.zhuo.com)中配置防盗链
cd /apps/nginx/html/ #切换目录
rz -E #上传图片
(2)配置防盗链
vim /apps/nginx/conf/nginx.conf (约49行开始插入
--------------------------------------------------------
http {
......server {......location ~* \.(jpg|gif|swf)$ {valid_referers none blocked *.lhf.com lhf.com;if ( $invalid_referer ) {rewrite ^/ http://www.lhf.com/3.png;}}
------------------------------------------------------------
~* \.(jpg|gif|swf)$ :这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的文件;valid_referers :设置信任的网站,可以正常使用图片;none:允许没有http_refer的请求访问资源(根据Referer的定义,它的作用是指示一个请求是从哪里链接过来的,如果直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer 字段的),如 http://www.lhf.com/2.jpg
我们使用 http://www.lhf.com 访问显示的图片,可以理解成 http://www.zhuo.com/2.jfif 这个请求是从 http://www.lhf.com 这个链接过来的。blocked:允许不是http://开头的,不带协议的请求访问资源; *.lhf.com:只允许来自指定域名的请求访问资源,如 http://www.zhuo.comif语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为true,则执行后面的操作
(3)检查并重启服务
nginx -t
systemctl restart nginx
(4)验证防盗链是否有效
#在盗链主机(192.168.156.110 )的浏览器中输入盗链主机的域名
打开火狐输入
192.168.156.10 或 www.lhf.com
和
192.168.156.110 或 www.dao.com
验证是否被盗链
相关文章:
Nginx服务优化与防盗链
目录 1.隐藏nginx版本号 1.查看版本号 2.隐藏版本信息 2.修改用户与组 3.缓存时间 4.日志分割 5.连接超时 6.更改进程数 7.网页压缩 8.配置防盗链 1.配置web源主机(192.168.156.10 www.lhf.com) 2.配置域名映射关系 3.配置盗链主机 ࿰…...
npm与yarn常用命令
npm npm -v:查看 npm 版本npm init:初始化后会出现一个 Package.json 配置文件,可以在后面加上 -y,快速跳到问答界面npm install:会根据项目中的 package.json 文件自动给下载项目中所需的全部依赖npm insall 包含 --…...
【C++】C++11新特性——右值引用
文章目录一、左值引用、 右值引用1.1 左值与右值1.2 左值引用1.3 右值引用二、右值引用的意义三、移动语句3.1 移动构造3.2 移动赋值3.3 总结四、move问题五、完美转发5.1 万能引用与折叠5.2 完美转发std::forward一、左值引用、 右值引用 1.1 左值与右值 我们经常能听到左值…...
C#基础教程21 正则表达式
文章目录 简介正则表达式语法字符集元字符转义字符量词贪婪匹配和非贪婪匹配正则表达式类Regex类Match方法Matches方法简介 正则表达式是一种描述字符串模式的语言,它可以用来匹配、查找、替换字符串中的模式。在C#中,我们可以使用System.Text.RegularExpressions命名空间下的…...
聚观早报|谷歌发布最大视觉语言模型;王兴投资王慧文ChatGPT项目
今日要闻:谷歌发布全球最大视觉语言模型;马斯克预计Twitter下季度现金流转正;王兴投资王慧文ChatGPT项目;美国拟明年 11 月开展载人绕月飞行;慧与科技宣布收购Athonet谷歌发布全球最大视觉语言模型 近日,来…...
java Spring5 xml配置文件方式实现声明式事务
在java Spring5通过声明式事务(注解方式)完成一个简单的事务操作中 我们通过注解方式完成了一个事务操作 那么 下面 我还是讲一下 基于xml实现声明式事务的操作 其实在开发过程中 大家肯定都喜欢用注解 因为他方便 这篇文章中的xml方式 大家做个了解就好 还是 我们的这张表 记…...
常用存储芯片-笔记本上固态硬盘PTS11系列推荐
在存储领域中,除了存储颗粒之外,还有一种极其重要的芯片:存储控制芯片。存储控制芯片是CPU与存储器之间数据交换的中介,决定了存储器最大容量、存取速度等多个重要参数。特别是在AI、5G、自动驾驶时代,对于数据处理及存…...
【AI绘图学习笔记】奇异值分解(SVD)、主成分分析(PCA)
这节的内容需要一些线性代数基础知识,如果你没听懂本文在讲什么,强烈建议你学习【官方双语/合集】线性代数的本质 - 系列合集 文章目录奇异值分解线性变换特征值和特征向量的几何意义什么是奇异值分解?公式推导SVD推广到任意大小矩阵如何求SV…...
【设计模式】模板方法模式和门面模式
模板方法模式和门面模式模板方法模式代码示例门面模式代码示例门面模式的应用场景模板方法模式 模板方法模式非常简单,就是定义了一个固定的公共流程,整个流程有哪些步骤是事先定义好的,具体的步骤则交由子类去实现。属于行为型设计模式。 简…...
Kubernetes未来十年的四大发展趋势
作者:李翔 跟大家已经感受到的一样,Kubernetes已经成为了云计算领域最具统治力的平台,成为了云原生开发的绝对标准,而伴随Kubernetes诞生的CNCF (Cloud Native Computing Foundation) 也因此成为了业界影响力巨大的组织。在成为云…...
一、sql 基础知识、函数和子查询
MySQL 是一种流行的关系型数据库管理系统,使用 SQL 语言进行数据管理和操作。在 MySQL 中,常用的语句包括 SELECT 查询语句、WHERE 条件语句、算术表达式、函数、聚合函数、自定义函数、逻辑表达式、子查询和连接。这些语句可以帮助用户快速地进行数据查…...
产品射频认证笔记
文章目录1. 射频监管认证的目的:1.1 确保 RF 产品在其预期环境中按预期运行1.2 确保射频产品不会干扰其他电子或射频设备2. 射频认证地区规范3. FCC简介4. FCC认证需要准备的内容:5. 射频监管测量会话期间测量以下射频属性:6. 调整射频参数6.…...
做了个springboot接口参数解密的工具,我给它命名为万能钥匙(已上传maven中央仓库,附详细使用说明)
前言:之前工作中做过两个功能,就是之前写的这两篇博客,最近几天有个想法,给它做成一个springboot的start启动器,直接引入依赖,写好配置就能用了 springboot使用自定义注解实现接口参数解密,普通…...
【Flutter从入门到入坑】Flutter 知识体系
学习 Flutter 需要掌握哪些知识? 终端设备越来越碎片化,需要支持的操作系统越来越多,从研发效率和维护成本综合考虑,跨平台开发一定是未来大前端的趋势,我们应该拥抱变化。而 Flutter 提供了一套彻底的移动跨平台方案…...
顺序表的基本操作
目录 一.什么是顺序表 二.顺序表的基本操作 1.初始化 2.增容 3.尾插 4.头插 5.尾删 6.头删 7.指定位置插入 8.指定位置删除 9.打印 10.查找 11.销毁 一.什么是顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组…...
设计模式——创建型模型——单列模式(8种实现)
前言: 👏作者简介:我是笑霸final,一名热爱技术的在校学生。 📝个人主页:个人主页1 || 笑霸final的主页2 📕系列专栏:计算机基础专栏 📧如果文章知识点有错误的地方&#…...
【软考中级】软件设计师笔记
计算机系统的性能一般包括两个方面:一方面是它的可用性,也就是计算机系统能正常工作的时间,其指标可以是能够持续工作的时间长度,也可以是在一段时间内,能正常工作的时间所占的百分比 另一方面是处理能力,又…...
包教包会的ES6
自学参考:http://es6.ruanyifeng.com/ 一、ECMAScript 6 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大…...
python学习——【第四弹】
前言 上一篇文章 python学习——【第三弹】 中学习了python中的流程控制语句,这篇文章我们接着学习python中的序列。先给大家介绍不可变序列 字符串和可变序列 列表,下一篇文章接着补充元组,集合和字典。 序列 指的是一块可以存放多个值的…...
Web3中文|无聊猿Otherside元宇宙启动第二次旅行
3月9日消息,无聊猿Bored Ape Yacht Club母公司Yuga Labs公布了其Otherside元宇宙游戏平台第二次测试的最新细节。Yuga Labs公司称,“第二次旅行”将于3月25日举行,由四位Otherside团队长带领完成近两小时的游戏故事。本次旅行对Otherdeed NFT…...
SpringCloud-7_OpenFeign服务调用
OpenFeign介绍OpenFeign是什么1.OpenFeign是个声明式WebService客户端,使用OpenFeign让编写Web Service客户端更简单2.它的使用方法是定义一个服务接口然后在上面添加注解3.OpenFeign也支持可拔插式的编码器和解码器4.Spring Cloud对OpenFeign进行了封装使其支持了S…...
解决docker容器之间网络互通
docker容器之间相互访问 1.查看当前的网络 Copy [roothost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 3dd4643bb158 bridge bridge local 748b765aca52 host host …...
测试微服务:快速入门指南
在过去几年中,应用程序已经发展到拥有数百万用户并产生大量数据。使用这些应用程序的人期望快速响应和 24/7 可用性。为了使应用程序快速可用,它们必须快速响应增加的负载。 一种方法是使用微服务架构,因为在单体应用程序中,主要…...
MySQL Show Profile分析
6 Show Profile分析(重点) Show Profile是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优的测量 官网文档 默认情况下,参数处于关闭状态,并保存最近15次的运行结果 分析步骤: 1、是否…...
基于Docker快速搭建蜜罐Dionaea(30)
实验目的 1. 快速搭建Dionaea蜜罐 2. 使用Nmap扫描测试Dionaea蜜罐预备知识1. 初步认识Dionaea dionaea,中文的意思即捕蝇草,是否形容蜜罐很形象?dionaea是nepenthes(猪笼草)的发展和后续,更加容易被部署和…...
WP_Query 的所有参数及其讲解和实用案例
WP_Query 是 WordPress 提供的一个强大的查询工具,用于获取与当前页面或文章相关的内容。下面是 WP_Query 的所有参数及其讲解:author: 查询特定作者的文章。可以是作者 ID、作者登录名或作者昵称。实用案例:查询作者为 "John Smith&quo…...
100个网络运维工作者必须知道的小知识!(上)
1)什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI参考模型的层次是什么? 有7个OSI层:物理层,数据链路层,网络层,传输…...
Python如何获取大量电影影评,做可视化演示
前言 《保你平安》今天上映诶,有朋友看过吗,咋样啊 这是我最近比较想看的电影了,不过不知道这影评怎么样,上周末的点映应该是有蛮多人看的吧,可以采集采集评论看过的朋友发出来的评论,分析分析 这周刚好…...
【C语言】详讲qsort库函数
qsort函数介绍具体作用qsort函数是一种用于对不同类型数据进行快速排序的函数,排序算法有很多最常用的冒泡排序法仅仅只能对整形进行排序,qsort不同,排序类型不受限制,qsort函数的底层原理是一种快速排序.基本构造qsort( void* arr, int sz, int sizeof, cmp_code);…...
SEO技术风口来了|SEO能否抓住全球约93%的网络用户?
开篇词作者/出品人 | 美洽 SEO 流量专家 白桦为什么要做一个 SEO 专栏?在一部分人眼中,SEO(搜索引擎优化)已经是老掉牙的玩意儿,在这个信息爆炸的年代,它似乎已经无法承担吸引流量的主要作用。但ÿ…...
用JSP做电商网站/百度收录网站提交入口
Android stutdio2.2 启动模拟器出现“/dev/kvm is not found.”解决方法参考文章: (1)Android stutdio2.2 启动模拟器出现“/dev/kvm is not found.”解决方法 (2)https://www.cnblogs.com/zhujiabin/p/9237104.html…...
灵武市建设银行网站/百度信息流投放
此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结。五一假期:在写点内容,也算是总结。上面我们会了基本的编程,我们需要对hadoop有一个更深的理解:hadoop分为hadoop1.X、…...
室内设计网站 知乎/qq推广链接
知识 shell执行方式 shell执行方式有 通过source或. 在现在的bash环境中执行脚本 变量等会保持 通过bash shell.sh或sh shell.sh 使用一个新的bash环境执行脚本 当子程序完成后,在子程序内的各项变量或动作将会结束而不会回传到父程序中 通过./shell.sh 只用一个新的…...
仿简书 wordpress/百度交易平台官网
TransactionScope是个好东西,可以自动管理transaction,即使是对分布式数据库也可以,但是需要一些配置(摸索了2天。。。), 本文的环境为windows 2003: 1. 对跑代码的机器和sql所在的服务器进行Co…...
甘肃网站开发企业/百度营销推广登录
绿地白字 echo -e "\033[42;37m 绿底白字 \033[0m" 转载于:https://www.cnblogs.com/xiaochina/p/7602686.html...
自动生成海报的网站/南京百度推广
下面用实例来演示一下如何用cookie和session来实现用户登录:一、cookie实现用户登录网站根目录下面有个inc目录,是存放一些公共配置文件的inc目录下的connect.php是数据库连接文件,代码如下:<?php define(DB_HOST,localhost);…...