http404错误界面
编辑/etc/httpd/conf/httpd.conf文件 找到 #ErrorDocument 500 "The server made a boo boo." #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html 第二行是显示404错误信息的,当客户访问你的网页出现404错误,即找不到网页,会显示该文件内的内容。该文件是需要自行建立的。 *注意:该文件建立的地点关系到你的网页是否会显示你设定的404错误(默认该文件的地点是/var/www/error)。也就是说,你的404错误页面放在哪个站点根目录下,哪个网页的404错误页面就会和你设定的一样。 重启服务,访问你发布的网页,网址后面乱打一串,如: //192.168.1.2/wolaileahahha 看看显示的是不是你设定的404错误页面? *注意:如果404页面的大小小于512b,则IE会认为404不够友好,则不会显示。 _________________________ 以上做法是公共的。 如果有多个网站,每个网站的错误界面设定不同或名字不同则行不通。在需要其他错误界面如403 405时也不够用。 所以有上述假设情况的时候,编辑/etc/httpd/conf/httpd.conf文件,跳至837行(83%处)有一部分类似别名目录的设定,复制到相应的网站设定内(需要修改的地方同理别名目录)。 修改路径时不能修改/error/。后面的路径可以自定义。 alias /error/ "/var/www/error/" <ifmodule mod_negotiation.c> <ifmodule mod_include.c> <directory "/var/www/error"> allowoverride none options includesnoexec addoutputfilter includes html addhandler type-map var order allow,deny allow from all LanguagePriority en es de fr ForceLanguagePriority Prefer Fallback </Directory> </IfModule> </IfModule> *注:千万不要漏了最后两行!!最后两行在下面的设定之后(870行,86%处),容易忽略。 然后从852行(84%处)往下看是各种错误设定,复制需要的错误界面到相应的网站设定中,修改错误文件路径即可。 文件路径修改时不能修改error目录,只需要修改后面的文件名。系统只认error目录 # ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var # ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var # ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var # ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var # ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var # ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var # ErrorDocument 410 /error/HTTP_GONE.html.var # ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var # ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var # ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var # ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var # ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var # ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var # ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var # ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var # ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var # ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var ***注意,403绑定页面名为noindex,404绑定页面名为nofile
HTTP服务配置
安装httpd服务 1. 挂载光盘 2. 安装相应的软件包 3. 配置文件 /etc/httpd/conf/httpd.conf 跳到文件末尾,复制第972行以及倒数七行: NameVirtualHost *:80 (如果后面要改端口,则该行可不复制。但如果多个网页是分不同域名访问的,这一句一定要。) <VirtualHost *:80> ServerAdmin [email protected] (出现错误的时候接受错误邮件的邮箱。) DocumentRoot /www/docs/dummy-host.example.com (服务文件所在目录) ServerName dummy-host.example.com (域名) ErrorLog logs/dummy-host.example.com-error_log (错误日志) CustomLog logs/dummy-host.example.com-access_log common (不知道= =) </VirtualHost> 根据需求改动相应内容。 3.1 <VirtualHost *:80> </VirtualHost> 往该两段内添加一行(可到391行(文件38%处)复制): DirectoryIndex 相应文件名 (首先访问的文件,也就是首页。一般是index.html) 4. 更改接收数据端口 4.1 <VirtualHost *:80> 80改为相应的端口。 跳到文件的132行(也就是12%处),更改Listen 80。将80端口改为相应的端口。 保存退出。 5. 别名目录 5.1 到文件的547行(也就是54%处)复制以下内容到末尾: Alias /icons/ "/var/www/icons/" <Directory "/var/www/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> 第一行的双斜杠内填写相应的目录名,双引号内填目录所在地。 第二行的双引号内填写的也是目录所在地。 假设别名目录为abc,所在地为/www/abc: Alias /abc/ "/www/abc/" <Directory "/www/abc/"> **注:两个所在地后面最好加上/符!特别是第一个! 5.2 以上是直接访问别名目录。如果要设置用户访问,则先创建一个http用户: htpasswd -c 目录 用户名 目录指用户详情文件所在地。后面再添加用户时,则不用再加-c参数。如果再加-c则有可能会覆盖掉原先的文件。 第二次添加用户 htpasswd 目录 用户名 接下来进入httpd.conf。还是在末尾,写入以下内容: Alias /abc/ "/www/abc/" <Directory "/www/abc"> authname "huanyin" (登录用户时弹框上的提示语) authtype Basic (用户验证类型,默认Basic) authuserfile /etc/httpd/htpasswd (用户详情文件所在的目录) require user http (能访问的用户) </Directory> 也可不删除之前直接访问别名目录的设定,这样虽然访问时依旧要用户,但重启服务时会有错误提示。 保存退出。 6. 生效 7. 访问。 直接访问主页: http:\\服务器IP 访问别名目录: http:\\服务器IP\别名目录名
http负载均衡
HTTP负载均衡 当一个网页访问量过大,可能会导致服务器崩溃,这时候就要做负载均衡。负载均衡指两台服务器同时做web服务器,两个服务器上发布同一网页,客户端访问的时候会随机指向一台服务器,这样就起到了分流的作用,可以减小服务器的压力。负载均衡还可以起到辅助区域的作用,如果一台服务器崩溃,另一台服务器还在工作,就不会导致客户端无法访问网页。 大致步骤 1.需要两台linux服务器,两台都要做http 2.服务器1上编辑sysctl.conf文件,开启路由转发功能。 3.挂载光盘,安装ipvsadm*。 4.添加虚拟服务器,添加真实服务器到虚拟服务器。 5.服务器2允许虚拟IP通过网卡,添加路由路径。 6.也要开启路由功能,还要添加四行代码。 7.测试 具体步骤 **服务器1:做主 ip为:192.168.100.1/24 **服务器2:做后端服务器 ip为:192.168.100.3/24 **为了显示效果,两个服务器的网页内容设置的不一样。 **这里的虚拟网卡全部是临时设置,注意不要随意重启网卡,否则一重启虚拟IP就没了…… 服务器1 #ifconfig eth0:1 192.168.100.10 netmask 255.255.255.0 添加虚拟网卡eth0:1 #vim /etc/sysctl.conf net.ipv4.ip_forward = 1 # Controls source route verification net.ipv4.conf.default.rp_filter = 1 # Do not accept source routing net.ipv4.conf.default.accept_source_route = 0 # Controls the System Request debugging function kernel.sysrq = 0 # Controls whether core dumps will append the PI # Useful for debugging multi-threaded applicatio kernel.core_uses_pid = 1 # Controls the use of TCP syncookies net.ipv4.tcp_syncookies = 1 编辑该文件,开启路由转发功能。保存退出。 可以用sysctl -p 读取修改后的内容 安装ipvsadm [root@localhost ~]# mount /dev/cdrom /media/cdrom/ mount: block device /dev/cdrom is write-protected, mounting read-only [root@localhost ~]# cd /media/cdrom/CentOS/ [root@localhost CentOS]# ls | grep ipvsadm ipvsadm-1.24-10.i386.rpm [root@localhost CentOS]# rpm -ivh ipvsadm* 然后 ipvsadm –A –t 192.168.100.10:80 –s wlc 添加虚拟服务器 IP为192.168.100.10 端口为80 调度算法为 wlc Ipvsadm –a –t 192.168.100.10:80 –r 192.168.100.1 –g Ipvsadm –a –t 192.168.100.10:80 –r 192.168.100.3 –g 添加真实服务器到虚拟服务器 echo ' aaa' > /var/www/html/index.html 添加默认主页内容 重启http服务 服务器2 ifconfig lo:0 192.168.100.10 netmask 255.255.255.255 broadcast 192.168.100.10 up route add -host 192.168.100.10 dev lo:0 允许虚拟IP通过网卡 添加路由路径 然后把下面四句添加在/etc/sysctl.conf文件最后来关闭arp 同时开启转发功能(修改地方同服务器1) net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 用 sysctl –p 读取修改后的内容 echo ' bbb' > /var/www/html/index.html 添加默认主页内容 重启http服务 测试:访问虚拟IP192.168.100.10 成功√ =======================错误解析======================= Q访问时,只能访问到一方服务器。主服务器或副服务器没起效。 A主服务器的ipvsadm有问题。重新把那三句话打一遍。如果提示此服务已存在之类的,则重启ipvsadm服务,然后再重打三句话即可。 Q访问虚拟IP失败,显示网址无效 A添加新网卡的IP应该和虚拟IP一样。
ssl加密
大致步骤: 安装服务http*,openssl*,mod_ssl* 创建秘钥(需要输入两次密码,第一次是秘钥密码,第二次是证书密码),证书 编辑httpd.conf文件添加一行模板 修改ssl.conf,改变秘钥和证书的路径,填写网站路径和域名 重启httpd服务,输入证书密码,重启成功。 访问网页(https模式)导入证书 访问成功 详细步骤: 1.安装服务http*,openssl*,mod_ssl* 2.创建秘钥 [root@localhost ~]# cd /etc/pki/tls/certs/ [root@localhost certs]# make auth.key umask 77 ; \ /usr/bin/openssl genrsa -des3 1024 > auth.key Generating RSA private key, 1024 bit long modulus ...................................................++++++ ........++++++ e is 65537 (0x10001) Enter pass phrase: [密码] Verifying - Enter pass phrase: [密码] 3.创建证书,填写证书信息 Common Name要和ssl.conf里的servername一致,否则可能重启服务失败[未验证] [root@localhost certs]# make auth.crt umask 77 ; \ /usr/bin/openssl req -utf8 -new -key auth.key -x509 -days 365 -out auth. crt -set_serial 0 Enter pass phrase for auth.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [GB]:CN [国家] State or Province Name (full name) [Berkshire]:guangdong [地区] Locality Name (eg, city) [Newbury]:shenzhen [城市] Organization Name (eg, company) [My Company Ltd]:lyt [机构] Organizational Unit Name (eg, section) []:lyt [机构全称] Common Name (eg, your name or your server's hostname) []:www.abc.com [域名] Email Address []: [邮箱] 4.编辑httpd.conf文件 [root@localhost certs]# vim /etc/httpd/conf/httpd.conf #添加以下内容 LoadModule ssl_module /etc/httpd/modules/mod_ssl.so #保存退出 5.编辑ssl.conf文件 [root@localhost certs]# vim /etc/httpd/conf.d/ssl.conf <VirtualHost _default_:443> #DocumentRoot "/var/www/html" #ServerName www.example.com:443 #去掉井号,修改网站路径和域名 SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key #改成 SSLCertificateFile /etc/pki/tls/certs/auth.crt SSLCertificateKeyFile /etc/pki/tls/certs/auth.key 6.修改证书所在目录 [root@localhost certs]# cd /etc/pki/tls/certs [root@localhost certs]# ls auth.crt auth.key ca-bundle.crt localhost.crt make-dummy-cert Makefile #根据步骤5,SSLCertificateKeyFile的路径更改auth.key的路径 7.重启httpd服务,输入证书密码 8.访问。https://服务器ip 导入证书,刷新页面,成功。 ================= 如果仅要求别名目录加密访问,则在ssl.conf文件内手动填写相应的alias设定。 servername 这里除了改成相应访问域名,还要在域名后面添加相应的别名目录 e.g. servername www.abc.com/https:443
不同域名访问
条件 #不同域名 #每个域名绑定IP不同 NameVirtualHost *:80 添加上面一句话,*:80改为本机IP <VirtualHost *:80> *:80改为相对应的域名 重启服务。 ---------------------------- 。不知道是上面笔记做错了还是条件不同…总之再写一个方案。 ---------------------------- 条件 #不同域名 #每个域名绑定IP不同 NameVirtualHost *:80 添加上面一句话,*:80改为本机域名 <VirtualHost *:80> *:80改为相对应的IP 重启服务。
关于中文网站访问乱码
最简便的方式——直接更改网页编码(右击-编码-简体中文(GB2312)) 更改配置文本 #vim /etc/httpd/conf/httpd.conf 搜索UTF-8,找到以下 AddDefaultCharset UTF-8 把UTF-8改为GBK或者GB2312,保存退出,重启httpd服务 重新访问网页会发现乱码已经正常显示。 如果还是乱码则试着在intert选项卡内清除缓存,重新访问页面