为什么停止了nginx服务还能打开网页?

1. 原因

因为启动了两次服务,开启了多个进程,所以关掉之后仍然可以打开网页。

2. 表象

启动了多次nginx服务器,运行第二次nginx -s stop命令来关闭服务器时,报如下错误:
nginx: [error] CreateFile() "E:\xxx\nginx-1.22.0/logs/nginx.pid" failed (2: The system cannot find the file specified)。为什么呢?nginx.pid文件会记录服务进程pid,两次启动可能最后一次启动的进程会覆盖第一次的文件,因此关闭服务器之后,只是关闭了最后一次的服务进程,而前面的进程都仍在运行,所以还能打开网页(ps:这段是我个人猜测,大概率不是这样,没有往下研究,知道的麻烦来指导一下吧···)。
在这里插入图片描述
那通过tasklist /fi "imagename eq nginx.exe"来看一下进程吧,果然还有进程在运行:
在这里插入图片描述
再通过任务管理器看看吧,确实也还在:
在这里插入图片描述

解决方法

  1. 通过任务管理器的来关吧,找到nginx.exe进程结束任务就好了,然后再通过tasklist /fi "imagename eq nginx.exe"命令或者打开网页看看服务还在不在,还在的话再通过任务管理器关闭,如此往复循环直到再无进程。
  2. 通过命令来关闭。
    通过tasklist /fi "imagename eq nginx.exe"可以看到进程的pid,如图二所示。然后通过taskkill -t -f /pid pid号命令来关闭进程就解决了,如下图所示。
    在这里插入图片描述
nginx服务器上搭建网页版IPTV并实现打开网址选频道播放,可按以下步骤操作: ### 安装Nginx及相关模块 实现直播和点播离不开服务器支持,可以使用开源的NGINX服务器搭建直播和点播服务,需要为NGINX增加相应的RTMP模块进行支持。 ```bash # 下载nginx wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -zxvf nginx-1.18.0.tar.gz # 下载nginx-http-flv-module wget https://github.com/winshining/nginx-http-flv-module/archive/master.zip unzip master.zip # 安装操作系统的依赖项 sudo yum install gcc make pcre pcre-devel openssl openssl-devel make curl wget unzip vim # 在nginx中进行配置 cd nginx-1.18.0 ./configure --add-module=../nginx-http-flv-module-master # 编译构建产品 如无权限 则输入 sudo make && sudo make install make && make install ``` 由于C语言的编译非常依赖服务器的各种类库,所以很容易出现各种各样的问题。如果一切正常,那么就会在`/usr/local/nginx`目录下搭建起nginx服务使用`nginx -v`,能看到版本输出,就表示nginx服务安装成功了。如果命令不存在,当前用户环境下仍然无法找到nginx命令,这通常是因为`/usr/local/nginx/sbin`目录没有被添加到系统的PATH环境变量中 [^3]。 ### 配置Nginx 编辑Nginx配置文件`/usr/local/nginx/conf/nginx.conf`,添加如下配置: ```nginx rtmp { server { listen 1935; chunk_size 4000; application live { live on; record off; } } } http { server { listen 80; server_name your_domain_or_ip; location / { root /path/to/your/html; # 存放网页文件的目录 index index.html; } location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /path/to/your/hls; # 存放HLS流文件的目录 add_header Cache-Control no-cache; } } } ``` ### 准备IPTV频道列表 在`/path/to/your/html`目录下创建一个`channels.json`文件,内容示例如下: ```json [ { "name": "Channel 1", "url": "rtmp://your_server_ip:1935/live/channel1" }, { "name": "Channel 2", "url": "rtmp://your_server_ip:1935/live/channel2" } ] ``` ### 创建HTML页面 在`/path/to/your/html`目录下创建`index.html`文件,内容示例如下: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>IPTV Channels</title> <style> #channel-list { list-style-type: none; padding: 0; } #channel-list li { cursor: pointer; margin-bottom: 10px; } #video-player { width: 100%; height: auto; } </style> </head> <body> <ul id="channel-list"></ul> <video id="video-player" controls></video> <script> const channelList = document.getElementById('channel-list'); const videoPlayer = document.getElementById('video-player'); fetch('channels.json') .then(response => response.json()) .then(channels => { channels.forEach(channel => { const listItem = document.createElement('li'); listItem.textContent = channel.name; listItem.addEventListener('click', () => { videoPlayer.src = channel.url; videoPlayer.load(); videoPlayer.play(); }); channelList.appendChild(listItem); }); }); </script> </body> </html> ``` ### 启动Nginx ```bash /usr/local/nginx/sbin/nginx ``` 通过以上步骤,就可以在浏览器中打开`http://your_server_ip`,选择频道进行播放。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值