1. 安装 EPEL 仓库
NGINX 不在 CentOS 的默认仓库中,因此首先需要安装 EPEL(Extra Packages for Enterprise Linux) 仓库。
sudo yum install epel-release
2. 安装 NGINX
通过 yum
包管理工具安装 NGINX。
sudo yum install nginx
3. 启动 NGINX 服务
sudo systemctl start nginx
4. 设置 NGINX 开机自启
如果你希望 NGINX 在系统启动时自动启动,使用以下命令设置开机自启:
sudo systemctl enable nginx
5. 防火墙配置
如果CentOS 7 上启用了 firewalld
防火墙,需要允许 HTTP 和 HTTPS 流量通过。
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
6. 验证安装
通过访问服务器的 IP 地址或域名来验证 NGINX 是否成功运行:
-
在浏览器中输入
http://<your-server-ip>
,如果你看到 NGINX 默认页面,则安装成功。
7. 检查 NGINX 服务状态
sudo systemctl status nginx
8. 停止或重启 NGINX
sudo systemctl stop nginx #停止NGINX服务 sudo systemctl restart nginx #重启NGINX服务
9. 调整配置(可选)
NGINX 的配置文件位于 /etc/nginx/nginx.conf
,你可以根据需要进行编辑。默认的 Web 根目录是 /usr/share/nginx/html
,你可以根据需要将文件放置在该目录下。
编辑配置文件:
sudo vi /etc/nginx/nginx.conf
如果修改了配置文件,记得重新加载 NGINX 配置:
sudo systemctl reload nginx
配置反向代理
假设你要将来自客户端的请求代理到运行在 localhost:8080
上的应用服务器。你可以按照以下步骤配置 NGINX 作为反向代理。
1.编辑 NGINX 配置文件:
打开默认的配置文件 nginx.conf
或者为特定站点创建一个新的配置文件:
sudo vi /etc/nginx/nginx.conf
或者,也可以在 /etc/nginx/conf.d/
目录下创建一个新的配置文件,比如 myproxy.conf
。
2.配置反向代理
在配置文件中,使用 proxy_pass
指令将客户端请求转发到后端服务器。例如,如果你想将请求代理到运行在 localhost:8080
上的服务,可以像下面这样设置:
server {listen 80;server_name example.com; # 你的网站域名location / {proxy_pass http://localhost:8080; # 将请求转发到 localhost:8080proxy_set_header Host $host; # 保持原始的 Host 头部proxy_set_header X-Real-IP $remote_addr; # 客户端的真实 IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 用于获取客户端的真实 IP 地址proxy_set_header X-Forwarded-Proto $scheme; # 保持请求协议(http/https)} }
-
proxy_pass
: 用于设置目标后端服务地址,可以是http://
或https://
协议。 -
proxy_set_header
: 将一些必要的头部信息传递给后端服务器,确保后端服务可以正确地识别客户端信息。
3.检查 NGINX 配置是否正确:
sudo nginx -t
4.重启 NGINX:
如果没有错误,你可以重启 NGINX 服务以使配置生效:
curl http://example.com
5. 测试反向代理
现在,所有访问 http://example.com
的请求都将被转发到 localhost:8080
。你可以通过浏览器或者 curl
命令来测试:
如果一切配置正确,你应该会看到后端服务器的响应。
反向代理的常见应用
-
负载均衡:
NGINX 可以作为负载均衡器,将请求分发到多个后端服务器。例如: -
SSL 终止:
NGINX 可以处理 SSL/TLS 加密和解密,将加密流量转发到后端服务器,后端服务器只需要处理 HTTP 请求。配置 SSL 终止的例子: -
缓存:
反向代理还可以用于缓存静态内容(如图片、CSS、JS 文件等),提高性能和响应速度。 -
安全性:
反向代理可以隐藏后端服务器的 IP 地址,增强安全性,防止外部直接访问后端服务。