Tag Archive: apache

三月 25th, 2018

centos apache多域名301跳转 ,具体做法:

在空间上加一个文件: .htaccess(注意h前的点不要漏了),记得放到网站主目录下

 

view source

print?

1 RewriteEngine On
2 RewriteCond %{HTTP_HOST} ^centoscn.com [NC,OR]
3 RewriteCond %{HTTP_HOST} ^www.centoscn.com [NC]
4 RewriteRule ^(.*)$ http://www.helloswift.com.cn/$1 [L,R=301]
TAGS: ,
三月 25th, 2018

不管出于什么时候的需要,至少老左在前天”CentOS6安装LAMP环境搭建教程”之后我自己尝试安装了wordpress测试站点安装是没有问题的,占用资源还是比较好,毕竟没有类似安装包或者WEB面板一咕噜安装太多的其他组件进去,只是根据自己的需要安装可操作环境就可以,但是有一个问题,在WORDPRESS设置固定链接之后伪静态不启动,查阅问答之后是需要手工启动Apache伪静态。

第一、编辑httpd.conf文件

A – 在etc/httpd/conf/目录下的httpd.conf 文件,找到:

LoadModule rewrite_module modules/mod_rewrite.so

如果前面有#就取消,如果没有就默认不要修改。

B – 设置AllowOverride

同样的在httpd.conf  中找到下面的脚本

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

把None改成All

第二、重启Apache环境

service httpd restart

这样,我们在确定网站根目录下有.htaccess文件,伪静态是生效的。

 

三月 25th, 2018

为什么要开启 gzip ?

服务器开启 gzip 压缩会大大的提高网站访问速度,带来良好的用户体验,而且降低网站流量,这些好处是显而易见的。下图是本站首页开启 gzip 后的情况:网页大小由 81.7k 压缩到 13.9k,receiving 接收数据只要 21 毫秒就完成了。

 

当然 gzip 并不是百利而无一害。首先服务器压缩网页数据会占用一定的服务器资源,另外如果 gzip 压缩得太厉害(压缩等级太高)可能会让旧版的 IE 系列无法正常打开网页。不过现在服务器一般性能都不会有太大问题,所以开启 gzip 利大于弊。

 

怎样知道服务器是否启用了gzip压缩呢?很简单,开启 firebug,看 network 选项卡,看是否有Content-Encoding : gzip 项,有则表示已开启。chrome 自带的调试工具(F12)也能看到。最简单地是去 chinaz(http://tool.chinaz.com/Gzips/) 去看网站数据。

怎样开启gzip压缩?

 

 

以 CentOS 为例,打开Apache的httpd.conf文件:

# vim /etc/httpd/conf/httpd.conf

 

搜索是否有这两行:

LoadModule deflate_module modules/mod_deflate.so

LoadModule headers_module modules/mod_headers.so

 

没有请加上,并确保 /etc/httpd/modules 目录存在 mod_deflate.so 文件。mod_deflate是压缩模块,就是对要传输到客户端的代码进行gzip压缩;mod_headers模块的作用是告诉浏览器页面使用了gzip压缩,如果不开启mod_headers那么浏览器就会对gzip压缩过的页面进行下载,而无法正常显示。

 

如果没问题,在 httpd.conf 最后加上:

<Location />

AddOutputFilterByType DEFLATE text/plain

AddOutputFilterByType DEFLATE text/css

AddOutputFilterByType DEFLATE application/xml

AddOutputFilterByType DEFLATE application/rss+xml

AddOutputFilterByType DEFLATE application/atom_xml

AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE application/x-httpd-php

AddOutputFilterByType DEFLATE text/html

</Location>

 

保存并关闭文件。重启Apache即可:service httpd restart。

其它写法

<IfModule mod_deflate.c>

#必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩

 

SetOutputFilter DEFLATE

#设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩

 

SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary

 

#同上,就是设置不对exe,tgz,gz。。。的文件进行压缩

 

SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary

SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary

 

#设置对文件是文本的内容进行压缩,例如text/html  text/css  text/plain等

 

AddOutputFilterByType DEFLATE text/*

 

#这段代码你只需要了解application/javascript application/x-javascript这段就可以了,这段的意思是对javascript文件进行压缩

 

AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript

 

#这段是告诉apache对php类型的文件进行压缩

AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp

 

# Netscape 4.x 有一些问题,所以只压缩文件类型是text/html的

 

BrowserMatch ^Mozilla/4 gzip-only-text/html

 

# Netscape 4.06-4.08 有更多的问题,所以不开启压缩

 

BrowserMatch ^Mozilla/4.0[678] no-gzip

 

# IE浏览器会伪装成 Netscape ,但是事实上它没有问题

 

BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

</IfModule>

 

配置到这里apache中的gzip压缩就配置完成,重启apache后,新的配置就会生效。不过开启gzip功能需要额外CPU资源开销。

 

另外题外话:图片没必要开启gzip压缩!

 

使用经由压缩过的图片作为网页背景,cpu飙高,页面假死严重(ie6)

所有的gif 或png等图片这些格式都是经过压缩过后的,对于这些文件进行压缩只是增加服务器负担而已。

 

对于图片优化的话可以使用ImageOptimizer来进行压缩,前提你的服务器足够强大那你可以忽略了。

TAGS: ,
三月 25th, 2018

#tar xvf mod_bw-0.8.gz

 

# cd mod_bw

 

# /opt/apache/bin/apxs -ac mod_bw.c

 

# gcc -shared -p /opt/apache/module/mod_bw.so mod_bw.o

 

#/opt/apache/bin/apxs -i -a -c mode_bw.c

 

然后在apache配置文件里面按照需要添加限制即可。

 

<VirtualHost *:80>

 

DocumentRoot “/web/linuxidc”

 

ServerName www.linuxidc.com

 

 

BandwidthModule On

 

ForceBandWidthModule On

 

Bandwidth all 1024000

 

MinBandwidth all 50000

 

LargeFileLimit * 500 100000   // *表示文件类型,所有大于500k的文件下载速度100k , 这里我当时以为两个单位一样的。。。

 

</VirtualHost>

 

附录:

 

mod_bandwidth选项简单说明:

 

BandWidthPulse

格式: BandWidthPulse <毫秒(千分之一秒>;

默认: 1000

上下文: per server config

 

改变计算带宽的时间间隔,默认为1000毫秒(1秒)。使用更低的间隔可以获得

更精确的带宽控制,但消耗更多的CPU时间,反之亦然。

 

BandWidth

格式: BandWidth <domain|ip|all>; <速率>;

默认: 无

上下文: per directory, .htaccess

 

限制这个目录下文件下载的速率。

 

domain 指定来自哪个域的连接受到这个设置的影响。

ip 指定来自哪个ip地址(或者ip段)的连接受到影响。

all 所有连接都受到影响。

 

示例:

 

<Directory />;

# 来自 idcfree.com 的连接不限制下载速度

BandWidth idcfree.com 0

# 来自 192.168.0.0/16(或者192.168.0) 网段的连接不限制下载速度

BandWidth 192.168.0.0/16 0

# 其他连接限制下载速度为每秒1024字节

BandWidth all 1024

# 越前面的设置优先权越高

</Directory>;

 

LargeFileLimit

格式: LargeFileLimit <文件大小>; <速率>;

默认: 无

上下文: per directory, .htaccess

 

对于超过指定大小的文件,下载时使用的速率。如果速率设置0即不限制速度,

但下载速度仍然要受到BandWidth设置的影响。如果设置成-1,则完全不受影响。

通过设置不同的文件大小和速率,可以设置不同大小范围内文件的下载速度。

 

示例:

 

文件尺寸大于等于200千字节的文件,下载速率为每秒3072字节

LargeFileLimit 200 3072

LargeFileLimit 1024 2048

MaxConnection

格式: MaxConnection <连接数>;

默认: 0 (不限制)

上下文: per directory, .htaccess

 

当超过指定连接数时,拒绝新的连接。

 

MinBandWidth

格式: MinBandWidth <domain|ip|all>; <速率>;

默认: all 256

上下文: per directory, .htaccess

 

设置最小带宽,默认为每秒256字节。根据BandWidth和LargeFileLimit设置的速

率。mod_bandwidth会计算允许的连接数。例如BandWidth为4096字节,而

MinBandWidth为1024字节,则最大并发连接数为4。

 

Mod_limitipconn选项简单说明:

 

<Location / >;                         设置要控制的目录

MaxConnPerIP 2                      限制单IP并发连接数

NoIPLimit image/*                    不受限制的文件类型

</Location>;

<Location /mp3>;

MaxConnPerIP 1

OnlyIPLimit audio/mpeg video           仅用于限制的文件类型

</Location>;

 

顺便附上单位转换。

 

位(bit,简写:b)

字节(Byte,简写:B);1Byte=8bit

 

千(Kilo,简写:K); x1,000

兆(Mega,简写:M); x1,000,000 =1000K

吉(Giga,简写:G); x1,000,000,000 =1000M

梯(      简写:T); x1,000,000,000,000 =1000G

 

由于计算机系统为二进制算法,实际进位为1024,有时计算容量时又忽略小数字,记为1000进位。因此会出现显示字节数和标称字节数有差别。

 

1KB=1024B

1MB=1024KB

1GB=1024MB

1TB=1024GB

 

TAGS:
三月 25th, 2018

首先在httpd.conf文件中把如下的配置放开,默认是注释掉的

LoadModule rewrite_module modules/mod_rewrite.so

下面是域名

ServerName http://www.xxxx.com

防盗链配置

RewriteEngine OnRewriteCond %{HTTP_REFERER} !^http://www.xxxx.com/.*$ [NC]RewriteCond %{HTTP_REFERER} !^http://www.xxxx.com$ [NC]RewriteRule .*\.(gif|png|jpg|swf)$ http://www.xxxx.com/images/error.png [R,NC]

RewriteRule .*\.(gif|png|jpg|swf)$ /ALLOW/img/error.jpg [R,NC]

  • RewriteEngine on:开启Rewrite
  • RewriteCond %{HTTP_REFERER} !^http://www.xxxx.com$ [NC]:如果网站不是从http://www.xxxx.com域名点开的都会显示error.png

RewriteCond中的正则很普通,所以不做说明。RewriteRule中的正则,(.*)代表任意字符,^是开始锚,$是结束锚。

 

TAGS: ,
三月 25th, 2018

一台新的linux CentOS服务器,安装好php环境后,发现apache默认解析路径是/var/www/html,如果不想使用这个默认路径,可以自己设置一个目录。

例:在根目录下新建/data/website文件夹用来存放项目。

准备工作:

创建目录

在根目录下

1 mkdir data

2 cd data

3 mkdir website

操作步骤:

1、vi /etc/httpd/conf/httpd.conf

找到 DocumentRoot “/var/www/html” 这一段 #apache的根目录

把/var/www/html 这个目录改为/data/website

再找到 #定义apache /var/www/html这个区域

把 /var/www/html改成/data/website

这样我们就把apahce的默认路径改掉了

1 service httpd restart #重启Apache服务器

2、访问localhost的时候,会发现访问拒绝,这是为什么呢?

 

主要是因为你的/home/wwwroot/web1/htdocs的权限是750,apache这个用户没有权限访问,你需要更改掉权限,可以这样改

1 chmod -R 755 /data/website

然后去访问 发现正常运行了(apache的用户:apache 运行apache的组:apache)

至此,Apache默认网站目录更改成功。

然后把你的项目移到配置好的目录下即可。

TAGS: ,
一月 16th, 2018
一台新的linux CentOS服务器,安装好php环境后,发现apache默认解析路径是/var/www/html,如果不想使用这个默认路径,可以自己设置一个目录。
例:在根目录下新建/data/website文件夹用来存放项目。
准备工作:
创建目录
在根目录下
1 mkdir data
2 cd data
3 mkdir website
操作步骤:
1、vi /etc/httpd/conf/httpd.conf
找到 DocumentRoot “/var/www/html” 这一段 #apache的根目录
把/var/www/html 这个目录改为/data/website
再找到 #定义apache /var/www/html这个区域
把 /var/www/html改成/data/website
这样我们就把apahce的默认路径改掉了
1 service httpd restart #重启Apache服务器
2、访问localhost的时候,会发现访问拒绝,这是为什么呢?
主要是因为你的/home/wwwroot/web1/htdocs的权限是750,apache这个用户没有权限访问,你需要更改掉权限,可以这样改
1 chmod -R 755 /data/website
然后去访问 发现正常运行了(apache的用户:apache 运行apache的组:apache)
至此,Apache默认网站目录更改成功。
然后把你的项目移到配置好的目录下即可。
TAGS: ,
二月 9th, 2017

当远程请求发送到你的 Apache Web 服务器时,在默认情况下,一些有价值的信息,如 web 服务器版本号、服务器操作系统详细信息、已安装的 Apache 模块等等,会随服务器生成的文档发回客户端。

这给攻击者利用漏洞并获取对 web 服务器的访问提供了很多有用的信息。为了避免显示 web 服务器信息,我们将在本文中演示如何使用特定的 Apache 指令隐藏 Apache Web 服务器的信息。

两个重要的指令是:

ServerSignature

这允许在服务器生成的文档(如错误消息、modproxy 的 ftp 目录列表、modinfo 输出等等)下添加一个显示服务器名称和版本号的页脚行。

它有三个可能的值:

  • On – 允许在服务器生成的文档中添加尾部页脚行,
  • Off – 禁用页脚行
  • EMail – 创建一个 “mailto:” 引用;用于将邮件发送到所引用文档的 ServerAdmin。

ServerTokens

它决定了发送回客户端的服务器响应头字段是否包含服务器操作系统类型的描述和有关已启用的 Apache 模块的信息。

此指令具有以下可能的值(以及在设置特定值时发送到客户端的示例信息):

  1. ServerTokens Full (或者不指定)

发送给客户端的信息: Server: Apache/2.4.2 (Unix) PHP/4.2.2 MyMod/1.2

  1. ServerTokens Prod[uctOnly]

发送给客户端的信息: Server: Apache

  1. ServerTokens Major

发送给客户端的信息: Server: Apache/2

  1. ServerTokens Minor

发送给客户端的信息: Server: Apache/2.4

  1. ServerTokens Min[imal]

发送给客户端的信息:Server: Apache/2.4.2

  1. ServerTokens OS

发送给客户端的信息: Server: Apache/2.4.2 (Unix)

注意:在 Apache 2.0.44 之后,ServerTokens 也控制由 ServerSignature 指令提供的信息。

 

为了隐藏 web 服务器版本号、服务器操作系统细节、已安装的 Apache 模块等等,使用你最喜欢的编辑器打开 Apache 配置文件:

  1. $ sudo vi /etc/apache2/apache2.conf #Debian/Ubuntu systems
  2. $ sudo vi /etc/httpd/conf/httpd.conf #RHEL/CentOS systems

添加/修改/附加下面的行:

  1. ServerTokens Prod
  2. ServerSignature Off

保存并退出文件,重启你的 Apache 服务器:

  1. $ sudo systemctl apache2 restart #SystemD
  2. $ sudo sevice apache2 restart #SysVInit
TAGS: ,
十一月 24th, 2016

Apache 基于模块化的理念而构建,这样就可以让 web 管理员添加不同的模块来扩展主要的功能及增强性能

常见的 Apache 模块有:

  1. mod_ssl – 提供了 HTTPS 功能
  2. mod_rewrite – 可以用正则表达式匹配 url 样式,并且使用 .htaccess 技巧来进行透明转发,或者提供 HTTP 状态码回应。
  3. mod_security – 用于保护 Apache 免于暴力破解或者 DDoS 攻击
  4. mod_status – 用于监测 Apache 的负载及页面统计

在 Linux 中 apachectl 或者 apache2ctl用于控制 Apache 服务器,是 Apache 的前端。

你可以用下面的命令显示 apache2ctl 的使用信息:

  1. $ apache2ctl help
  2. 或者
  3. $ apachectl help
  1. Usage: /usr/sbin/httpd [-D name] [-d directory] [-f file]
  2. [-C "directive"] [-c "directive"]
  3. [-k start|restart|graceful|graceful-stop|stop]
  4. [-v] [-V] [-h] [-l] [-L] [-t] [-S]
  5. Options:
  6. -D name : define a name for use in directives
  7. -d directory : specify an alternate initial ServerRoot
  8. -f file : specify an alternate ServerConfigFile
  9. -C "directive" : process directive before reading config files
  10. -c "directive" : process directive after reading config files
  11. -e level : show startup errors of level (see LogLevel)
  12. -E file : log startup errors to file
  13. -v : show version number
  14. -V : show compile settings
  15. -h : list available command line options (this page)
  16. -l : list compiled in modules
  17. -L : list available configuration directives
  18. -t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)
  19. -S : a synonym for -t -D DUMP_VHOSTS
  20. -t -D DUMP_MODULES : show all loaded modules
  21. -M : a synonym for -t -D DUMP_MODULES
  22. -t : run syntax check for config files

apache2ctl 可以工作在两种模式下,SysV init 模式和直通模式。在 SysV init 模式下,apache2ctl 用如下的简单的单命令形式:

  1. $ apachectl command
  2. 或者
  3. $ apache2ctl command

比如要启动并检查它的状态,运行这两个命令。如果你是普通用户,使用 sudo 命令来以 root 用户权限来运行:

  1. $ sudo apache2ctl start
  2. $ sudo apache2ctl status
  1. tecmint@TecMint ~ $ sudo apache2ctl start
  2. AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1\. Set the 'ServerName' directive globally to suppress this message
  3. httpd (pid 1456) already running
  4. tecmint@TecMint ~ $ sudo apache2ctl status
  5. Apache Server Status for localhost (via 127.0.0.1)
  6. Server Version: Apache/2.4.18 (Ubuntu)
  7. Server MPM: prefork
  8. Server Built: 2016-07-14T12:32:26
  9. -------------------------------------------------------------------------------
  10. Current Time: Tuesday, 15-Nov-2016 11:47:28 IST
  11. Restart Time: Tuesday, 15-Nov-2016 10:21:46 IST
  12. Parent Server Config. Generation: 2
  13. Parent Server MPM Generation: 1
  14. Server uptime: 1 hour 25 minutes 41 seconds
  15. Server load: 0.97 0.94 0.77
  16. Total accesses: 2 - Total Traffic: 3 kB
  17. CPU Usage: u0 s0 cu0 cs0
  18. .000389 requests/sec - 0 B/second - 1536 B/request
  19. 1 requests currently being processed, 4 idle workers
  20. __W__...........................................................
  21. ................................................................
  22. ......................
  23. Scoreboard Key:
  24. "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
  25. "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
  26. "C" Closing connection, "L" Logging, "G" Gracefully finishing,
  27. "I" Idle cleanup of worker, "." Open slot with no current process

当在直通模式下,apache2ctl 可以用下面的语法带上所有 Apache 的参数:

  1. $ apachectl [apache-argument]
  2. $ apache2ctl [apache-argument]

可以用下面的命令列出所有的 Apache 参数:

  1. $ apache2 help [在基于Debian的系统中]
  2. $ httpd help [在RHEL的系统中]

检查启用的 Apache 模块

因此,为了检测你的 Apache 服务器启动了哪些模块,在你的发行版中运行适当的命令,-t -D DUMP_MODULES 是一个用于显示所有启用的模块的 Apache 参数:

  1. --------------- 在基于 Debian 的系统中 ---------------
  2. $ apache2ctl -t -D DUMP_MODULES
  3. 或者
  4. $ apache2ctl -M
  1. --------------- RHEL 的系统中 ---------------
  2. $ apachectl -t -D DUMP_MODULES
  3. 或者
  4. $ httpd -M
  5. $ apache2ctl -M
  1. [root@tecmint httpd]# apachectl -M
  2. Loaded Modules:
  3. core_module (static)
  4. mpm_prefork_module (static)
  5. http_module (static)
  6. so_module (static)
  7. auth_basic_module (shared)
  8. auth_digest_module (shared)
  9. authn_file_module (shared)
  10. authn_alias_module (shared)
  11. authn_anon_module (shared)
  12. authn_dbm_module (shared)
  13. authn_default_module (shared)
  14. authz_host_module (shared)
  15. authz_user_module (shared)
  16. authz_owner_module (shared)
  17. authz_groupfile_module (shared)
  18. authz_dbm_module (shared)
  19. authz_default_module (shared)
  20. ldap_module (shared)
  21. authnz_ldap_module (shared)
  22. include_module (shared)
  23. ....
TAGS: ,
十一月 5th, 2016

基本的操作方法:

本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况

apahce启动命令:

推荐/usr/local/apache2/bin/apachectl start apaceh启动

apache停止命令

/usr/local/apache2/bin/apachectl stop   停止

apache重新启动命令:

/usr/local/apache2/bin/apachectl restart 重启

要在重启 Apache 服务器时不中断当前的连接,则应运行:

/usr/local/sbin/apachectl graceful

如果apache安装成为linux的服务的话,可以用以下命令操作:

service httpd start 启动

service httpd restart 重新启动

service httpd stop 停止服务

 

Linux系统为Ubuntu

一、Start Apache 2 Server /启动apache服务

# /etc/init.d/apache2 start

or

$ sudo /etc/init.d/apache2 start

二、 Restart Apache 2 Server /重启apache服务

# /etc/init.d/apache2 restart

or

$ sudo /etc/init.d/apache2 restart

三、Stop Apache 2 Server /停止apache服务

# /etc/init.d/apache2 stop

 

 

原博客连接:http://xiaofengjava.iteye.com/blog/2316380

TAGS: