Nginx配置服务,监听80端口指向指定index.html

前言

正常服务器如果需要http服务,需要通过nginx进行服务设置,直接访问ip默认访问80端口,但指向哪里就需要通过nginx进行配置

安装nginx

  1. 更新系统软件包索引:在安装任何新软件之前,建议先更新系统的软件包索引:

    sudo yum update
    
  2. 安装Nginx:使用yum包管理器来安装Nginx:

    sudo yum install nginx
    

    在执行此命令后,yum会从软件源下载Nginx软件包并安装它。

  3. 启动Nginx服务:安装完成后,您可以通过以下命令启动Nginx服务:

    sudo systemctl start nginx
    

    如果您希望在系统启动时自动启动Nginx服务,可以使用以下命令将其设置为开机自启动:

    sudo systemctl enable nginx
    
  4. 检查Nginx状态:您可以使用以下命令检查Nginx服务的运行状态:

    sudo systemctl status nginx
    

    如果一切正常,您应该会看到Nginx服务正在运行。

  5. 配置防火墙:如果您的防火墙启用了,您需要确保允许HTTP流量通过。您可以使用以下命令开放HTTP端口(端口80):

    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --reload
    
  • 这样就完成了Nginx的安装和基本配置。您现在可以通过浏览器访问您的服务器的IP地址(例如http://服务器的IP地址)来测试Nginx是否正常工作。

配置nginx.conf文件

设置server监听80端口,并指向index.html

  • 编辑/etc/nginx/nginx.conf文件
vim /etc/nginx/nginx.conf
  • 配置server设置
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    server {
		listen       80;
		server_name example.com;
		root /home/example-ht-vue/;
		index  index.html;
    }
}
  1. server { ... }: 这是一个服务器块的开始标记,表示接下来的配置适用于特定的服务器块。

  2. listen 80;: 这指示Nginx监听HTTP请求的80端口。当来自80端口的HTTP请求到达服务器时,Nginx将使用此服务器块来处理这些请求。

  3. server_name example.com;: 这指定了当收到的HTTP请求中的"Host"标头与"example.com"匹配时,应该使用此服务器块来处理请求。换句话说,这个服务器块会处理来自"example.com"域名的HTTP请求。

  4. root /home/example-ht-vue/;: 这指定了Nginx在处理请求时应该使用的根目录。在这种情况下,所有来自"seascross.com"域名的请求都将在/home/example-ht-vue/目录中寻找文件。

  5. index index.html;: 这定义了默认的索引文件。如果客户端请求的是一个目录而不是一个具体的文件,Nginx将尝试在目录中查找名为"index.html"的文件并返回它。

重启

systemctl restart nginx

测试访问

curl http://127.0.0.1/

遇到的坑

一、权限不足,无法访问

  • 在通过curl http://127.0.0.1/访问,返回如下
[root@localhost ~]# curl http://127.0.0.1/
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>

排查方法

  • 查看log
cat /var/log/nginx/error.log
2024/05/13 14:56:01 [error] 20634#20634: *1 "/home/seascross-ht-vue/index.html" is forbidden (13: Permission denied), client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", host: "127.0.0.1"
  • 可以看出权限不足

解决方法

1. 用户修改为root
  • 设置nginx.conf文件
vim /etc/nginx/nginx.conf
  • 把nginx用户改成root用户
# user nginx;
user root;
  • 重启nginx
service nginx restart
2. 文件夹设置权限
  • 给index.html所在目录设置权限
chmod 777 -R /home/example
3. selinux没有关闭
  • 这个是问题关键

SELinux(Security-Enhanced Linux)是一种Linux内核安全模块,提供了强大的访问控制机制,可以限制程序的行为,保护系统免受恶意软件和攻击的影响。getenforce命令用于查看当前SELinux的状态,它会告诉你SELinux是处于"Enforcing"(强制)模式还是"Permissive"(宽容)模式。在强制模式下,SELinux会强制执行策略,拒绝任何未经授权的操作。在宽容模式下,SELinux仍然会记录违规的操作,但不会阻止它们。
setenforce 0命令用于将SELinux设置为宽容模式,即使SELinux配置文件中指定了强制模式。这对于临时禁用SELinux或者在调试期间放宽安全策略时非常有用。但请注意,这不是永久性的禁用SELinux的方法,系统重新启动后,SELinux可能会重新回到其配置文件中指定的状态。

查看selinux状态:getenforce
设置selinux关闭:setenforce 0

[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive

外网无法访问

要使用Firewalld开放端口80(HTTP服务),您可以执行以下步骤:

  1. 检查HTTP服务是否在Firewalld中定义:在Firewalld中,服务通常与端口相关联。首先,检查HTTP服务是否已经定义。您可以使用以下命令来列出Firewalld中已定义的服务:

    sudo firewall-cmd --list-services
    

    如果您看到“http”服务在列表中,那么它已经被定义了。如果没有,请继续下一步。

  2. 添加HTTP服务到Firewalld:如果HTTP服务未在Firewalld中定义,您可以通过以下命令将其添加:

    sudo firewall-cmd --add-service=http --permanent
    

    这将添加HTTP服务,并将其持久化,确保在系统重启后仍然生效。如果您之前已经添加过HTTP服务,这个命令会忽略它。

  3. 添加端口到Firewalld

    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
    
  4. 重新加载Firewalld配置:添加服务后,需要重新加载Firewalld配置使更改生效:

    sudo firewall-cmd --reload
    
  5. 验证端口是否开放:您可以使用以下命令验证端口80是否已经开放:

    sudo firewall-cmd --list-all
    

    在输出中,您应该能够看到HTTP服务被添加到“public”区域,并且80端口处于开放状态。

这样设置后,您的Firewalld应该允许来自外部网络的HTTP流量通过端口80。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值