答案:在CentOS 7上安装Nginx前需更新系统、安装EPEL仓库、检查端口占用、配置防火墙和处理SELinux;通过创建独立配置文件实现多网站虚拟主机;使用certbot工具获取Let's Encrypt证书并配置SSL,启用HTTPS。

在CentOS 7上配置Nginx,核心步骤无非就是安装软件、进行基础配置,然后确保服务能正常启动并对外提供访问。这听起来可能有点像老生常谈,但实际操作中,一些小细节,比如防火墙或者SELinux,常常会让人头疼。我个人觉得,把这些看似独立的点串起来,才能真正“搞定”Nginx,而不是简单地敲几行命令。
要让Nginx在CentOS 7上跑起来,我的经验是,先从系统层面做点准备,接着才是Nginx本身的安装和配置。
首先,Nginx通常不在CentOS 7的默认软件仓库里。所以,我们得先加个EPEL(Extra Packages for Enterprise Linux)仓库。这玩意儿就像是给CentOS官方仓库打了个补丁,很多常用的第三方软件都在里面。
sudo yum install epel-release -y
安装完EPEL,就可以直接用yum安装Nginx了。这比从源码编译省事儿多了,尤其是在生产环境,能少一步操作就少一步,减少出错的概率。
sudo yum install nginx -y
安装好之后,别急着访问,我们得让Nginx服务启动起来,并且设置成开机自启。不然服务器重启一下,Nginx就“罢工”了,那可就麻烦了。
sudo systemctl start nginx sudo systemctl enable nginx
接着是配置。Nginx的核心配置文件是
/etc/nginx/nginx.conf
/etc/nginx/conf.d/
.conf
举个最简单的例子,如果你想跑一个静态网站,可以在
/etc/nginx/conf.d/mywebsite.conf
server {
listen 80;
server_name example.com www.example.com;
root /usr/share/nginx/html; # 你的网站文件存放路径
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}这里
root
index
location /
配置完文件,非常重要的一步是检查配置语法。一个错别字或者少个分号,都可能导致Nginx启动失败。
sudo nginx -t
如果显示
syntax is ok
test is successful
sudo systemctl reload nginx
最后,也是很多人容易忽略的,就是防火墙。CentOS 7默认开启了
firewalld
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https # 如果你后续会用HTTPS sudo firewall-cmd --reload
这样一套流程下来,Nginx基本就能正常工作了。
在我看来,在CentOS 7上安装Nginx之前,做足准备工作能省去很多后续的麻烦。我个人在实践中总结了几点,觉得挺关键的。
首先,系统更新。这听起来有点老套,但却是基础中的基础。一个保持最新状态的系统,能避免很多潜在的兼容性问题和安全漏洞。
sudo yum update -y
接着,检查一下系统里有没有其他占用80或443端口的服务,比如Apache HTTP Server。如果Apache正在运行,Nginx就没法监听这些端口,会报错。我通常会用
netstat -tulnp | grep :80
lsof -i :80
另外,SELinux(Security-Enhanced Linux)也是个不得不提的“拦路虎”。CentOS 7默认开启SELinux,它可能会阻止Nginx访问网站目录或者其他资源,即使文件权限看起来没问题。我个人建议,如果你对SELinux策略不熟悉,可以暂时将其设置为
Permissive
# 查看SELinux状态 sestatus # 临时设置为Permissive模式 (重启后失效) sudo setenforce 0 # 永久设置为Permissive模式 (修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive,然后重启系统)
当然,更专业的做法是为Nginx配置SELinux布尔值,比如允许Nginx通过HTTP访问用户主目录(如果你的网站文件放在那里)。但这块儿有点复杂,通常在初期可以先绕过去。
最后,就是上面提到的防火墙配置了。确保HTTP和HTTPS端口是开放的,这是Nginx对外提供服务的最后一道关卡。这些准备工作做好了,后面的安装和配置过程就会顺畅很多。
为Nginx配置多个网站,也就是我们常说的虚拟主机(Server Blocks),是Nginx非常实用的一个功能。我的做法是,每个网站一个配置文件,这样管理起来非常清晰,也便于排查问题。
Nginx在
/etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
conf.d
.conf
假设你现在有两个网站:
site1.com
site2.com
1. 创建网站目录: 首先,为每个网站创建独立的根目录,用来存放网站文件。比如:
sudo mkdir -p /var/www/site1.com/html sudo mkdir -p /var/www/site2.com/html
然后在这些目录下放上各自的
index.html
2. 配置site1.com: 在
/etc/nginx/conf.d/
site1.com.conf
sudo vi /etc/nginx/conf.d/site1.com.conf
文件内容可以这样写:
server {
listen 80;
server_name site1.com www.site1.com; # 你的域名
root /var/www/site1.com/html; # 网站文件根目录
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 错误页面配置 (可选)
error_page 404 /404.html;
location = /40x.html {
}
}3. 配置site2.com: 同样地,创建一个
site2.com.conf
sudo vi /etc/nginx/conf.d/site2.com.conf
内容类似,只是修改
server_name
root
server {
listen 80;
server_name site2.com www.site2.com; # 你的第二个域名
root /var/www/site2.com/html; # 网站文件根目录
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 错误页面配置 (可选)
error_page 404 /404.html;
location = /40x.html {
}
}4. 检查配置并重载Nginx: 每当你修改了Nginx的配置文件,都应该先用
nginx -t
sudo nginx -t
如果没问题,就重载Nginx服务,让新的配置生效。
sudo systemctl reload nginx
这样,当用户访问
site1.com
server_name
site1.com.conf
site2.com
site2.com.conf
在当今互联网环境下,启用HTTPS几乎是所有网站的标配,它不仅能加密数据,提升安全性,对SEO也有积极影响。在CentOS 7上为Nginx配置SSL/TLS,我通常会结合Let's Encrypt来操作,因为它提供免费且自动续期的证书,非常方便。
1. 获取SSL证书: 我强烈推荐使用
certbot
首先,安装
certbot
sudo yum install certbot python2-certbot-nginx -y
接着,运行
certbot
sudo certbot --nginx -d example.com -d www.example.com
这里
example.com
www.example.com
certbot
成功后,你的证书文件(
fullchain.pem
privkey.pem
/etc/letsencrypt/live/example.com/
2. 配置Nginx Server Block: 现在,你需要修改Nginx的网站配置文件(比如
/etc/nginx/conf.d/example.com.conf
一个典型的HTTPS配置块看起来像这样:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri; # 强制HTTP重定向到HTTPS
}
server {
listen 443 ssl; # 监听443端口,并启用SSL
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # 证书文件路径
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 私钥文件路径
# 推荐的SSL配置 (安全性与兼容性平衡)
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.2 TLSv1.3; # 禁用旧的、不安全的协议
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA";
ssl_prefer_server_ciphers on;
# HSTS (HTTP Strict Transport Security) 推荐开启
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
root /var/www/example.com/html; # 你的网站文件根目录
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}这里面,
listen 80
server
listen 443 ssl
server
ssl_certificate
ssl_certificate_key
3. 更新防火墙规则: 如果之前没有开通443端口,现在需要把它加到防火墙规则里:
sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
4. 检查配置并重载Nginx:
sudo nginx -t sudo systemctl reload nginx
完成这些步骤后,你的网站就应该可以通过HTTPS安全访问了。别忘了定期检查
certbot
sudo certbot renew --dry-run
以上就是CentOS 7怎么配置Nginx_CentOS 7安装与配置Nginx服务器教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号