首页 > 运维 > CentOS > 正文

CentOS 7怎么配置Nginx_CentOS 7安装与配置Nginx服务器教程

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

centos 7怎么配置nginx_centos 7安装与配置nginx服务器教程

在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处理请求的核心逻辑,它会尝试查找对应的文件或目录。

配置完文件,非常重要的一步是检查配置语法。一个错别字或者少个分号,都可能导致Nginx启动失败。

sudo nginx -t
登录后复制

如果显示

syntax is ok
登录后复制
test is successful
登录后复制
,那就可以放心地重载Nginx服务了。

sudo systemctl reload nginx
登录后复制

最后,也是很多人容易忽略的,就是防火墙。CentOS 7默认开启了

firewalld
登录后复制
。如果你不把80端口(HTTP)或者443端口(HTTPS)打开,外部是访问不到你的Nginx服务的。

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https # 如果你后续会用HTTPS
sudo firewall-cmd --reload
登录后复制

这样一套流程下来,Nginx基本就能正常工作了。

CentOS 7上安装Nginx前有哪些关键准备工作?

在我看来,在CentOS 7上安装Nginx之前,做足准备工作能省去很多后续的麻烦。我个人在实践中总结了几点,觉得挺关键的。

首先,系统更新。这听起来有点老套,但却是基础中的基础。一个保持最新状态的系统,能避免很多潜在的兼容性问题和安全漏洞。

sudo yum update -y
登录后复制

接着,检查一下系统里有没有其他占用80或443端口的服务,比如Apache HTTP Server。如果Apache正在运行,Nginx就没法监听这些端口,会报错。我通常会用

netstat -tulnp | grep :80
登录后复制
或者
lsof -i :80
登录后复制
这样的命令检查一下。如果发现有,要么停掉它,要么调整Nginx的监听端口。

另外,SELinux(Security-Enhanced Linux)也是个不得不提的“拦路虎”。CentOS 7默认开启SELinux,它可能会阻止Nginx访问网站目录或者其他资源,即使文件权限看起来没问题。我个人建议,如果你对SELinux策略不熟悉,可以暂时将其设置为

Permissive
登录后复制
模式,或者针对Nginx做特定的策略调整。

# 查看SELinux状态
sestatus

# 临时设置为Permissive模式 (重启后失效)
sudo setenforce 0

# 永久设置为Permissive模式 (修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive,然后重启系统)
登录后复制

当然,更专业的做法是为Nginx配置SELinux布尔值,比如允许Nginx通过HTTP访问用户主目录(如果你的网站文件放在那里)。但这块儿有点复杂,通常在初期可以先绕过去。

最后,就是上面提到的防火墙配置了。确保HTTP和HTTPS端口是开放的,这是Nginx对外提供服务的最后一道关卡。这些准备工作做好了,后面的安装和配置过程就会顺畅很多。

琅琅配音
琅琅配音

全能AI配音神器

琅琅配音208
查看详情 琅琅配音

如何在CentOS 7上为Nginx配置多个网站(虚拟主机)?

为Nginx配置多个网站,也就是我们常说的虚拟主机(Server Blocks),是Nginx非常实用的一个功能。我的做法是,每个网站一个配置文件,这样管理起来非常清晰,也便于排查问题。

Nginx在

/etc/nginx/nginx.conf
登录后复制
这个主配置文件里,通常会有一行
include /etc/nginx/conf.d/*.conf;
登录后复制
。这行的作用就是告诉Nginx,把
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
登录后复制
时,Nginx会根据
server_name
登录后复制
匹配到
site1.com.conf
登录后复制
的配置;访问
site2.com
登录后复制
时,则会匹配到
site2.com.conf
登录后复制
。这种模块化的配置方式,在我看来,是管理多个网站的最佳实践。

CentOS 7下Nginx如何进行SSL/TLS配置以启用HTTPS?

在当今互联网环境下,启用HTTPS几乎是所有网站的标配,它不仅能加密数据,提升安全性,对SEO也有积极影响。在CentOS 7上为Nginx配置SSL/TLS,我通常会结合Let's Encrypt来操作,因为它提供免费且自动续期的证书,非常方便。

1. 获取SSL证书: 我强烈推荐使用

certbot
登录后复制
工具来获取Let's Encrypt证书。它能自动化很多步骤,省去了手动生成CSR、验证域名等繁琐过程。

首先,安装

certbot
登录后复制
和Nginx插件:

sudo yum install certbot python2-certbot-nginx -y
登录后复制

接着,运行

certbot
登录后复制
来获取证书。它会自动检测你的Nginx配置,并尝试为你配置HTTPS。

sudo certbot --nginx -d example.com -d www.example.com
登录后复制

这里

example.com
登录后复制
www.example.com
登录后复制
替换成你的实际域名。
certbot
登录后复制
会引导你完成一系列步骤,包括验证域名所有权,以及是否强制将HTTP流量重定向到HTTPS。我个人建议选择强制重定向,这样能确保所有用户都通过安全连接访问。

成功后,你的证书文件(

fullchain.pem
登录后复制
privkey.pem
登录后复制
)通常会存放在
/etc/letsencrypt/live/example.com/
登录后复制
目录下。

2. 配置Nginx Server Block: 现在,你需要修改Nginx的网站配置文件(比如

/etc/nginx/conf.d/example.com.conf
登录后复制
),来启用HTTPS。

一个典型的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
登录后复制
块负责将所有HTTP请求重定向到HTTPS。
listen 443 ssl
登录后复制
server
登录后复制
块才是处理HTTPS请求的。
ssl_certificate
登录后复制
ssl_certificate_key
登录后复制
指向你Let's Encrypt证书的公钥和私钥文件。

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中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号