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配置:添加服务后,需要重新加载Firewalld配置使更改生效:

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

    sudo firewall-cmd --list-all
    

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/12069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Netgear无线路由器漏洞复现(CVE-2019-20760)

漏洞概述 漏洞服务&#xff1a; uhttpd 漏洞类型&#xff1a; 远程命令执行 影响范围&#xff1a; 1.0.4.26之前的NETGEAR R9000设备会受到身份验证绕过的影响 解决建议&#xff1a; 更新版本 漏洞复现 操作环境&#xff1a; ubuntu:22.04 qemu-version&#xff1a; 8.1…

mysql8.0常用语法

文章目录 开窗函数字段拆分递归关联查询 开窗函数 开窗函数 &#xff0c;可以按组查询排列数据&#xff0c;且给每一行值都返回指定的聚合值&#xff0c;语法如下&#xff1a; 开窗函数 over([PARTITION BY 分组字段(多个用,链接)] [ORDER BY 排序字段(同前)])开窗函数分为两…

【JVM】从三种认知角度重识JVM

目录 JVM概述 JVM主要功能 虚拟机是Java平台无关的保障 JVM概述 JVM&#xff1a;Java Virtual Machine,也就是Java虚拟机。 虚拟机&#xff1a;通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统&#xff08;物理上不存在&#xff09;。 JVM通…

聊聊ChatGPT:智能语言模型背后的原理

目录 1. ChatGPT的基础&#xff1a;GPT模型 2. 预训练与微调&#xff1a;让模型更加智能 2.1 预训练 2.2 微调 3. 多样化的应用场景 4. 未来的展望 5. 结语 在当今的人工智能领域&#xff0c;OpenAI的ChatGPT无疑是一个炙手可热的话题。它不仅能流畅地进行对话&#xff…

一键批量合并视频:掌握视频剪辑技巧解析,轻松创作完美影片

在数字时代的浪潮下&#xff0c;视频已成为人们记录和分享生活的重要工具。然而&#xff0c;对于许多非专业视频编辑者来说&#xff0c;将多个视频片段合并成一个完整的影片却是一项复杂且耗时的任务。幸运的是&#xff0c;云炫AI智剪一键批量合并视频功能的出现&#xff0c;让…

ICode国际青少年编程竞赛- Python-5级训练场-综合练习5

ICode国际青少年编程竞赛- Python-5级训练场-综合练习5 1、 a 16 for i in range(6):Dev.step(1)Dev.turnLeft()Dev.step(a)Dev.step(-a)Dev.turnRight()while Dev.energy < 100:wait()Dev.step(1)a a - 5 i2、 for i in range(5):Dev.step(11 - i * 2)Dev.turnRight()wh…

【算法】登山(线性DP,最长上升)

题目 五一到了&#xff0c;ACM队组织大家去登山观光&#xff0c;队员们发现山上一共有N个景点&#xff0c;并且决定按照顺序来浏览这些景点&#xff0c;即每次所浏览景点的编号都要大于前一个浏览景点的编号。 同时队员们还有另一个登山习惯&#xff0c;就是不连续浏览海拔相同…

人工智能中的概率魔法:解锁不确定性的智慧之钥

在人工智能&#xff08;AI&#xff09;的广阔天地中&#xff0c;概率论以其独特的魅力&#xff0c;成为了连接现实世界与智能决策的桥梁。从语音识别到图像识别&#xff0c;从自然语言处理到机器翻译&#xff0c;从智能推荐到自动驾驶&#xff0c;概率论知识在这些领域中发挥着…

高低温试验箱型号怎么选择?多禾试验带你一起探索

高低温试验箱在工业和科学研究当中扮演着至关重要的角色。无论是在电子、汽车、医疗器械还是航空航天领域&#xff0c;都需要对产品在不同温度条件下的性能进行测试。然而&#xff0c;在进行选择适合自己需求的高低温试验箱型号时&#xff0c;面对市场上琳琅满目的设备&#xf…

给定两点所能得到的数学关系

给定两点所能得到的数学关系 正文 正文 这里介绍一个基础问题&#xff0c;如果给定平面上的两个点的坐标&#xff0c;那么它们之间能够得到什么数学关系呢&#xff1f; ω arctan ⁡ y 1 − y 0 x 1 − x 0 x 1 − x 0 d cos ⁡ ω y 1 − y 0 d cos ⁡ ω d ( x 1 − x…

js中变量提升的那点事

变量提升是一个将变量声明或者函数声明提升到作用域起始处的过程&#xff0c;即变量声明 var 和函数声明 function fun() {…} 在会发生变量提升过程。 先来说变量声明var,看代码 console.log(test) // undefined var test"testStr" console.log(test) // testStr看…

你想知道74系列有多少种芯片吗?全在这里了

74系列芯片功能大全 7400 TTL 2输入端四与非门7401 TTL 集电极开路2输入端四与非门7402 TTL 2输入端四或非门7403 TTL 集电极开路2输入端四与非门7404 TTL 六反相器7405 TTL 集电极开路六反相器7406 TTL 集电极开路六反相高压驱动器7407 TTL 集电极开路六正相高压驱动器7408 T…

GIT基础01 基础命令与分支

前言 我们知道git是开发中比较常见的版本控制工具 我们可以先提出一个场景: 老板让你去修改方案 第一次修改 打回 第二次修改 打回 第n次修改 老板让你使用第一次的版本 阁下如何应对??? 我对每个版本进行编号?? 是一种方案 但是这里也是有缺陷的 比如说在很多版本中找…

测试驱动来学习 Promise

基础功能 测试案例&#xff1a;以同步的方式调用。 /*** v1: 基础功能*/ const p1 new MyPromise((resolve, reject) > {resolve(success)reject(error) })p1.then((value) > {console.log(v1: , value) }) 实现功能&#xff1a;在 status 和 value 的位置暂存值&…

什么是MVC?什么是SpringMVC?什么是三层架构?

文章目录 应用分层什么是MVC?什么是 SpringMVC&#xff1f;三层架构三层架构和MVC的关系 应用分层 在讲解什么是MVC之前&#xff0c;先来理解一下什么是应用分层。 应用分层是一种软件开发设计思想&#xff0c;将应用程序划分成N个层次&#xff0c;每个层次都分别负责自己的…

StarryCoding 入门教育赛 3 题解C++

比赛链接&#xff1a;https://www.starrycoding.com/contest/8 A. 坐标变换 语法题&#xff0c;考察输入输出、循环结构、数学运算。 #include <bits/stdc.h> using namespace std; using ll long long;const ll p 998244353; const int N 2e5 9;void solve() {in…

鸿蒙应用开发之调用C++开发代码库1

由于鸿蒙应用主要基于ArkTS开发,主要使用的语言是ETS,也就是JS脚本方式来开发,这与C++语言开发是不同的语言,这样就不能直接相互调用,因为不同的语言使用不同的数据结构,不同的调用方式,不同的运行环境。要想在ETS语言里调用C++开发的代码,需要进行合适的转换,并且按指…

Java学习【类与对象—封装】

Java学习【类与对象—封装】 封装的概念封装的实现包的概念import 导包导包中*的介绍import static 导入包中的静态方法和字段 static关键字的使用static 修饰成员变量static修饰方法静态成员变量的初始化 代码块静态代码块非静态代码块/实例化代码块/构造代码块加载顺序 封装的…

什么是外呼系统?企业为什么使用ai电销外呼系统

说起ai电销外呼系统&#xff0c;或许有的人并不了解这是什么&#xff0c;但它却常常出现在我们的生活中&#xff0c;今天我们来看看什么是外呼系统&#xff0c;企业为什么使用ai电销外呼系统&#xff1f; 一、什么是外呼系统 外呼系统就是由系统自动拨打电话的&#xff0c;外呼…

单例模式(饿汉+懒汉)

单例模式 文章目录 单例模式定义饿汉式单例**饿汉式单例需要加volatile关键字吗**类加载过程 懒汉式单列 定义 单例模式(Singleton),保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点 饿汉式单例 饿汉式单例是Java中实现单例模式的一种方式&#xff0c;它在类…