WEB 服务器
WEB 服务器简介
Web 服务器(Web Server)是指一种接收客户端(如浏览器)发送的 HTTP 请求,并返回网页内容或资源的程序或设备。它是万维网(WWW)的核心组成部分。
Web 服务器的主要功能

常见web服务器
Apache
Apache HTTP Server,非正式的称呼 Apache,是世界上应用最广泛的WEB服务器。
其优势在于,Apache一个可扩展的Web服务器,支持的模块非常丰富。
Apache的源代码是开放的、支持跨平台应用等。
Apache 是属于重量级产品,在速度和性能上不及其他轻量级WEB服务器,所消耗的内存也比其他WEB服务器要高。
Nginx
Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll、kqueue、eventport最为网络I/O模型,在高连接并发的情况下,能够支持高达5万个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。
Lighttpd
Lighttpd提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的WEB Server环境,它具有内存开销低、CPU占有率低、效能好,以及模块丰富等特点。支持FastCGI、CGI、Auth、输出压缩、URL重写及Alias等重要功能,属于轻量级WEB服务器。
Tomcat
Tomcat 是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的web应用软件容器。Tomcat server 是根据servlet和jsp规范执行的,因此也可以说Tomcat server实行了Apache-Jakarta规范,且比绝大多数商用应用软件服务器要好。tomcat对静态文件和高并发的处理比较弱。
IIS
Microsoft的Web服务器产品为 Internet Information Server (IIS), IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。IIS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在IIS的平台上。IIS提供了一个图形界面的管理工具,称为 Internet服务管理器,可用于监视配置和控制Internet服务。
IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI(IntranetServer API)作为扩展Web服务器功能的编程接口;同时它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。
Nginx
Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll、kqueue、eventport最为网络I/O模型,在高连接并发的情况下,能够支持高达5万个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。
安装 nginx
bash
# 安装 nginx
[root@server ~ 21:10:50]# yum install -y nginx
# 启动 nginx
[root@server ~ 21:11:03]# systemctl enable nginx --now
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
# 准备主页
[root@server ~ 21:12:12]# mv /usr/share/nginx/html/index.html{,.ori}
[root@server ~ 21:13:13]# echo Hello World From Nginx > /usr/share/nginx/html/index.html
# 防火墙(如果未启用就不用做)
[root@server ~ 21:13:16]# firewall-cmd --add-service=http --permanent
[root@server ~ 21:13:19]# firewall-cmd --reload
[root@client ~]# curl http://www.xiexin.cloud
# windows客户端修改C:\Windows\System32\drivers\etc\hosts
# Linux或Unix修改 /etc/hosts
# 添加如下记录
10.1.8.10 www.xiexin.cloud
虚拟主机
同一个web服务器提供多个站点。
根据名称
bash
[root@server ~ 21:13:22]# vim /etc/nginx/conf.d/vhost-name.conf
bash
server {
server_name web1.xiexin.cloud;
root /usr/share/nginx/web1;
}
server {
server_name web2.xiexin.cloud;
root /usr/share/nginx/web2;
}
根据 port
bash
[root@server ~ 21:19:17]# vim /etc/nginx/conf.d/vhost-port.conf
bash
server {
listen 8081;
server_name www.xiexin.cloud;
root /usr/share/nginx/8081;
}
server {
listen 8082;
server_name www.xiexin.cloud;
root /usr/share/nginx/8082;
}
配置SSL/TLS
生成证书
bash
#--1--生成私钥
[root@server ~ 21:19:26]# openssl genrsa -out www.key 2048
Generating RSA private key, 2048 bit long modulus
..............................................................................+++
............................................................................................................................+++
e is 65537 (0x10001)
#--2--生成请求文件csr
[root@server ~ 21:20:54]# openssl req -new -key www.key -out www.csr -subj "/C=CN/ST=JS/L=NJ/O=LM/OU=DEVOPS/CN=www.xiexin.cloud/emailAddress=xiexin@xiexin.cloud"
#CN的值必须是网站域名
#--3--使用自己的私钥对请求文件签名,以生成证书
[root@server ~ 21:21:51]# openssl x509 -req -days 3650 -in www.csr -signkey www.key -out www.crt
Signature ok
subject=/C=CN/ST=JS/L=NJ/O=LM/OU=DEVOPS/CN=www.xiexin.cloud/emailAddress=xiexin@xiexin.cloud
Getting Private key
配置站点
bash
[root@server ~ 21:22:21]# mkdir /etc/ssl/certs/www.xiexin.cloud
[root@server ~ 21:23:05]# mv www* /etc/ssl/certs/www.xiexin.cloud
[root@server ~ 21:23:18]# vim /etc/nginx/conf.d/ssl.conf
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name www.xiexin.cloud;
root /usr/share/nginx/html;
# 证书
ssl_certificate "/etc/ssl/certs/www.xiexin.cloud/www.crt";
# 私钥
ssl_certificate_key "/etc/ssl/certs/www.xiexin.cloud/www.key";
}
[root@server ~ 21:25:01]# systemctl restart nginx
# 配置HTTP重定向到https.
[root@server ~ 21:25:04]# vim /etc/nginx/nginx.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.xiexin.cloud;
root /usr/share/nginx/html;
# 添加 重定向
return 301 https://$host$request_uri;
}
[root@server ~ 21:27:35]# systemctl restart nginx
# 防火墙设置(防火墙一般默认不开)
[root@www ~]# firewall-cmd --add-service=https --permanent
[root@www ~]# firewall-cmd --reload
# 测试
[root@client ~ 21:28:50]# curl http://www.xiexin.cloud/
[root@client ~ 21:28:57]# curl -k https://www.xiexin.cloud/
配置基本认证
用户名和密码使用plain text发送,所以最好配置SSL/TLS。
bash
# 安装工具
[root@server ~ 21:27:47]# yum -y install httpd-tools
[root@server ~ 21:35:34]# vim /etc/nginx/conf.d/ssl.conf
server {
.....
location /auth-basic/ {
auth_basic "Basic Auth";
auth_basic_user_file "/etc/nginx/.htpasswd";
}
}
[root@server ~ 21:36:17]# systemctl restart nginx
# add user for Basic authentication
[root@server ~ 21:36:48]# htpasswd -c /etc/nginx/.htpasswd xiexin
New password:
Re-type new password:
Adding password for user xiexin
# create a test page
[root@server ~ 21:37:45]# mkdir /usr/share/nginx/html/auth-basic
[root@server ~ 21:38:23]# vim /usr/share/nginx/html/auth-basic/index.html
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: xiexiner;">
Test Page for Basic Authentication
</div>
</body>
</html>
# 测试
[root@client ~ 21:40:15]# curl http://www.xiexin.cloud/auth-basic/
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: xiexiner;">
Test Page for Basic Authentication
</div>
</body>
</html>
支持动态脚本
使用 PHP
bash
# 安装PHP和php-fpm,建议把其他的扩展包一起安装
[root@server ~ 21:39:10]# yum install -y php php-fpm
# 建议把其他的扩展包一起安装
[root@server ~ 21:42:22]# yum install -y php-gd php-common php-pear php-mbstring php-mcrypt
# 查看 php 版本
[root@server ~ 21:43:31]# php -v
PHP 5.4.16 (cli) (built: Apr 1 2020 04:07:17)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
# 测试 php 是否正常
[root@server ~ 21:44:04]# echo "<?php echo 'PHP Test Page'.\"\n\"; ?>" > php_test.php
[root@server ~ 21:44:40]# php php_test.php
PHP Test Page
# 准备测试页,使用phpinfo查看详细信息
[root@server ~ 21:44:45]# echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
# 测试
[root@client ~]# curl http://www.xiexin.cloud/info.php
Tomcat
Apache Tomcat 是一个开源的 Java Servlet 容器和 Web 服务器,常用于部署 Java Web 应用。它实现了 Java EE 中的 Servlet、JSP 等规范。
主要特点
-
Servlet 容器:支持运行基于 Servlet 技术的 Java Web 应用。
-
支持 JSP:可以编译和运行 JSP 页面。
-
轻量级:相比完整的 Java EE 服务器(如 JBoss、WebLogic),Tomcat 更轻便,适合中小型 Web 项目。
-
开源免费:由 Apache 软件基金会维护。
-
配置灵活:通过 XML 配置文件(如 server.xml、context.xml)进行管理。
Tomcat 部署
bash
# 安装
[root@server ~ 21:49:44]# yum install -y tomcat
# 验证版本
[root@server ~ 21:50:19]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)
# 启动tomcat
[root@server ~ 21:51:34]# systemctl enable --now tomcat.service
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.
# 准备测试页面
[root@server ~ 21:51:53]# cd /var/lib/tomcat/webapps/
[root@server webapps 21:52:12]# mkdir test
[root@server webapps 21:52:16]# vim test/index.jsp
<html>
<head>
<title>第一个 JSP 程序</title>
</head>
<body>
<%
out.println("Hello World!");
%>
</body>
</html>
# 测试
[root@server ~ 21:54:57]# curl http://www.xiexin.cloud:8080/test/index.jsp
<html>
<head>
<title>第一个 JSP 程序</title>
</head>
<body>
Hello World!
</body>
</html>