环境确认
必要软件安装
# Apache
sudo yum install httpd
# Nginx (EPEL仓库)
sudo yum install epel-release
sudo yum install nginx
创建网站目录
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R apache:apache /var/www/example.com/public_html
sudo chmod -R 755 /var/www
创建虚拟主机配置文件
sudo vi /etc/httpd/conf.d/example.com.conf
配置文件内容示例
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.com-access.log combined
<Directory /var/www/example.com/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
多域名指向同一站点
ServerAlias www.example.com example.net www.example.net
基于IP的虚拟主机
<VirtualHost 192.168.1.1:80>
# 配置内容
</VirtualHost>
HTTPS配置
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
SSLCertificateChainFile /path/to/chain.pem
# 其他配置
</VirtualHost>
创建网站目录
sudo mkdir -p /var/www/example.com/html
sudo chown -R nginx:nginx /var/www/example.com/html
sudo chmod -R 755 /var/www
创建虚拟主机配置文件
sudo vi /etc/nginx/conf.d/example.com.conf
配置文件内容示例
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
负载均衡配置
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
HTTP重定向到HTTPS
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
Gzip压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
DNS记录设置
本地hosts测试
sudo vi /etc/hosts
# 添加
192.168.1.1 example.com www.example.com
配置检查
# Apache
sudo apachectl configtest
# Nginx
sudo nginx -t
403 Forbidden错误
bash
sudo chcon -R -t httpd_sys_content_t /var/www/example.com
域名无法解析
dig example.com
或nslookup example.com
测试端口冲突
bash
sudo netstat -tulnp | grep :80
日志分析
bash
sudo tail -f /var/log/httpd/example.com-access.log
启用缓存
启用HTTP/2
资源压缩
连接优化
按照以上步骤配置完成后,重启相应服务即可生效:
# Apache
sudo systemctl restart httpd
# Nginx
sudo systemctl restart nginx
记得设置服务开机自启:
sudo systemctl enable httpd
# 或
sudo systemctl enable nginx