Apache HTTP Server

> Apache HTTP Server — 一个跑了几十年还在被无数网站使用的开源Web服务器,帮你把静态文件、动态脚本稳稳地发给全世界。 ## 先说这玩意儿是干嘛的 你平时上网,输入网址,浏览器咔一下弹出页面,背后那个“咔”的动作基本都是Web服务器干的。Apache HTTP Server(俗称httpd)就是其中最老牌、最皮实的一个。它不搞花活,就是把你的HTML、图片、CSS,或者通过PHP、Python跑的动态内容,按HTTP协议打包发出去。 它解决的问题很实在:**怎么让外网的人稳定访问你机器上的文件**。比如你写了个个人博客,或者公司要挂个官网,又或者你想在内网搭个文件共享,Apache都能干。它跨平台,Windows、Linux、macOS通吃,而且模块化设计,想要啥功能装个模块就行,不像某些新潮服务器那样“全家桶”绑架你。 ## 下载方式:别去乱七八糟的站 官网就是 [Apache HTTP Server官网](https://httpd.apache.org/),这是唯一正儿八经的下载源。但注意,Apache本身只提供源码,你得自己编译。如果你不想折腾,推荐用下面这些打包好的发行版: - **Windows**:去 [Apache Lounge](https://www.apachelounge.com/download/) 下载预编译的zip包,解压就能用,省心。 - **Linux(Debian/Ubuntu)**:直接 `sudo apt install apache2`,系统帮你管好。 - **Linux(CentOS/RHEL)**:`sudo yum install httpd`。 - **macOS**:系统自带Apache,但版本老,建议用 `brew install httpd` 装新版。 ## 安装方法:分平台说,别慌 ### Windows(以Apache Lounge为例) 1. 下载zip包,比如 `httpd-2.4.59-win64-VS17.zip`。 2. 解压到 `C:\Apache24`(路径别带空格)。 3. 打开 `C:\Apache24\conf\httpd.conf`,把 `Define SRVROOT "/Apache24"` 改成 `Define SRVROOT "C:/Apache24"`(注意正斜杠)。 4. 以管理员身份打开命令行,进入 `C:\Apache24\bin`,运行 `httpd.exe -k install` 注册为Windows服务。 5. 启动服务:`net start Apache2.4`,然后浏览器访问 `http://localhost`,看到“It works!”就成功了。 ### Ubuntu/Debian ```bash sudo apt update sudo apt install apache2 -y sudo systemctl enable apache2 # 开机自启 sudo systemctl start apache2 # 启动 ``` 装完直接访问 `http://localhost`,默认页面出来就行。 ### CentOS ```bash sudo yum install httpd -y sudo systemctl enable httpd sudo systemctl start httpd ``` 注意CentOS防火墙默认挡80端口,记得 `sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --reload`。 ## 基础使用教程:改配置、放文件、看日志 ### 1. 网站根目录 默认在 `/var/www/html/`(Linux)或 `C:\Apache24\htdocs`(Windows)。你把 `index.html` 放进去,访问 `http://你的IP/` 就能看到。 ### 2. 改端口 想用8080?编辑 `conf/httpd.conf`,找到 `Listen 80` 改成 `Listen 8080`,然后重启服务: ```bash sudo systemctl restart apache2 # Linux # Windows: net stop Apache2.4 && net start Apache2.4 ``` ### 3. 虚拟主机(一个服务器跑多个网站) 这是Apache的看家本领。在 `conf/extra/httpd-vhosts.conf` 里加: ```apache <VirtualHost *:80> ServerName blog.example.com DocumentRoot "/var/www/blog" ErrorLog "logs/blog-error.log" CustomLog "logs/blog-access.log" common </VirtualHost> ``` 然后记得在 `httpd.conf` 里取消这行的注释: ```apache Include conf/extra/httpd-vhosts.conf ``` 重启后,把 `blog.example.com` 解析到你服务器IP,就能访问 `/var/www/blog` 了。 ### 4. 开HTTPS(SSL证书) 现在没HTTPS的网站等于裸奔。用Let's Encrypt免费证书,在Ubuntu上: ```bash sudo apt install certbot python3-certbot-apache -y sudo certbot --apache -d yourdomain.com ``` 跟着提示走,自动改配置、自动续期,爽到飞起。 ### 5. 看日志排错 日志是Apache的生命线。默认日志位置: - Linux:`/var/log/apache2/access.log` 和 `error.log` - Windows:`C:\Apache24\logs\error.log` 出问题先看error.log,比如权限不对、配置语法错误,都在里面写着。 ## 进阶技巧:让你的Apache更顺手 ### 1. 开启mod_rewrite(伪静态) WordPress、ThinkPHP这类东西必须有它。启用模块: ```bash sudo a2enmod rewrite ``` 然后在你网站的 `.htaccess` 文件里写规则。比如把 `?id=123` 变成 `/post/123.html`: ```apache RewriteEngine On RewriteRule ^post/([0-9]+)\.html$ index.php?id=$1 [L] ``` ### 2. 用gzip压缩,页面秒开 在 `httpd.conf` 或虚拟主机配置里加: ```apache <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript </IfModule> ``` ### 3. 隐藏Apache版本号 安全第一,别让人知道你用哪个版本。在 `httpd.conf` 里: ```apache ServerTokens Prod ServerSignature Off ``` ### 4. 限制IP访问(比如只让公司内网看后台) ```apache <Location /admin> Require ip 192.168.1.0/24 Require ip 10.0.0.1 </Location> ``` ### 5. 反向代理(把请求转发给Node或Tomcat) ```apache ProxyPass /api http://localhost:3000 ProxyPassReverse /api http://localhost:3000 ``` 需要先 `sudo a2enmod proxy proxy_http`。 ### 6. 性能调优:开启KeepAlive 默认是开的,但确认一下: ```apache KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 ``` 这能减少TCP握手次数,对高并发很有用。 ## 最后说两句 Apache确实不如Nginx那么“潮”,但它稳啊。我见过跑了十年没重启过的生产服务器,就是Apache。它的配置语法虽然老,但网上资料多,踩坑容易找答案。如果你刚开始学Web服务器,从Apache入手,你会理解HTTP协议、虚拟主机、权限控制这些底层概念,之后换Nginx或者Caddy都是降维打击。 别被命令行吓到,照着上面一步步来,十分钟你就能有个能访问的网站。遇到问题就翻日志,日志看不懂就复制去搜索引擎,基本都能解决。玩得开心!