环境:CentOS
1.安装Nginx
在 CentOS 上,可以使用以下命令安装 Nginx:
sudo yum install nginx
如果你执行完这个返回了这个结果
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
- base: mirrors.qlu.edu.cn
- extras: mirrors.qlu.edu.cn
- updates: mirrors.nju.edu.cn
No package nginx available.
Error: Nothing to do
说明yum 未能找到名为 “nginx” 的软件包。这可能是因为 Nginx 的官方软件包源未被正确添加到你的 CentOS 系统,你需要添加 Nginx 的官方 YUM 仓库到你的系统中。通常,你可以使用以下命令来添加 Nginx 仓库:
sudo vi /etc/yum.repos.d/nginx.repo
在编辑器中,粘贴以下内容并保存文件:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/releasever/basearch/
gpgcheck=0
enabled=1
保存文件后,退出编辑器。
再次安装 Nginx:
现在,你可以再次运行以下命令来安装 Nginx:
sudo yum install nginx
如果一切设置正确,YUM 应该能够找到并安装 Nginx 软件包
2.修改Nginx配置文件
nginx -t
使用 nginx -t 命令会检查配置文件的语法错误,并报告配置文件的位置。
接着修改Nginx的配置文件,添加如下内容到http{}内,注意一定是在{}里面才是对的
server {
listen 80;
server_name 192.168.1.2; # 替换成你的域名或IP地址
location / {
proxy_pass http://localhost:1714; #替换成你要指向的地址
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
改完之后,类似这样:
再使用上面的 nginx -t 命令检查 Nginx 配置文件的语法是否正确
如果没有语法错误,你将看到 “syntax is okay” 的消息。
3.重启Nginx
重新加载 Nginx 配置以应用更改:
sudo systemctl reload nginx
4.防火墙配置
如果你的服务器上启用了防火墙(如 firewalld),要开启新的防火墙端口,使用 firewall-cmd 命令。例如,你监听的端口80和应用程序的端口1714,可以运行:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=1714/tcp --permanent
–zone=public 指定了防火墙区域,你可以根据你的需求选择不同的区域,例如 --zone=internal。
–add-port=8080/tcp 指定了要开启的端口和传输协议(这里是 TCP)。
–permanent 表示你要将该规则永久保存,以便在系统重新启动后仍然生效。
5.重新加载防火墙规则
在添加新规则后,你需要重新加载防火墙规则,以使更改生效:
sudo firewall-cmd --reload
验证端口是否已开启:
使用以下命令来验证端口是否已成功开启:
sudo firewall-cmd --list-ports
6.测试应用是否正常启动
使用curl命令测试接口
curl -X POST -H "Content-Type: application/json" -d '{"key1": "value1", "key2": "value2"}' http://localhost:1714/user/list
OK,正常
7.测试Nginx是否正常转发请求
OK,配置成功
8.Nginx访问异常问题
其实我在实验过程是遇到问题的,Nginx没有权限调用,如下
异常日志的查看,目录是/var/log/nginx/error.log
解决办法是:
setsebool -P httpd_can_network_connect 1
这里是查阅资料说明
运行 setsebool -P httpd_can_network_connect 1 命令会尝试启用 SELinux 中的 httpd_can_network_connect 布尔值。这个布尔值控制了 Apache HTTP 服务器(httpd)是否允许进行网络连接。如果你的 Nginx 服务器正在运行并需要连接到本地或远程应用程序,这个命令可能有助于解决问题。
关于这个命令的注意事项:
这个命令只在使用 SELinux 的系统上有效。如果你的系统没有启用 SELinux,这个命令不会产生任何影响。
启用 httpd_can_network_connect 布尔值可能会使 SELinux 放宽 Apache HTTP 服务器的网络连接策略,允许它连接到更多目标。这可能对一些安全性敏感的环境造成潜在风险。
在某些情况下,启用这个布尔值可能有助于解决连接问题,但请谨慎使用。如果可能,最好了解 SELinux 策略并根据需要进行配置,以确保服务器的安全性。
启用 httpd_can_network_connect 布尔值可能对系统的整体安全性产生影响,因此建议仅在明确了解其影响并明确需要时使用。
最好的做法是在明确了解 SELinux 策略和你的服务器环境的情况下使用此命令。如果你不确定如何配置 SELinux,可能需要与系统管理员或安全专家联系以获取建议。
再试下应该是可以成功了