💾 1. 安装

Windows 版本(单机版,非虚拟机,选择 .zip 文件,解压可用)

nginx: download官网下载地址

浏览器访问 localhost 得到

 Welcome to nginx!
 If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
 
 For online documentation and support please refer to nginx.org.
 Commercial support is available at nginx.com.
 
 Thank you for using nginx.

🐱‍💻 2. 操作指令

   # 启动方式 I  👍
   E:\Java\nginx-1.21.3>start nginx
   
   # 启动方式 II 👎  cmd 窗口一直处于执行中,不能进行其他命令操作; 还可能导致多开进程。
   E:\Java\nginx-1.21.3>nginx.exe
   
   # 停止,快速停止 nginx,可能并不保存相关信息;
   E:\Java\nginx-1.21.3>nginx.exe -s stop
   
   # 停止,quit 是完整有序的停止 nginx,并保存相关信息。
   E:\Java\nginx-1.21.3>nginx.exe -s quit        
   
   # 重新载入 Nginx: 当配置信息修改,需要重新载入这些配置时使用此命令。
   E:\Java\nginx-1.21.3>nginx.exe -s reload       
   
   # 重新打开日志文件
   E:\Java\nginx-1.21.3>nginx.exe -s reopen
   
   # 查看 Nginx 版本
   E:\Java\nginx-1.21.3>nginx -v

✍️ 3. 修改配置文件

# nvim E:\Java\nginx-1.21.3\conf\nginx.conf
server {
        listen 80;

        # 请求头 host 地址
        server_name google.com;
        
        location / {
           # 反向代理本机服务
           proxy_pass http://127.0.0.1:10000;
        }
}

nginx -t 检验通过

当然,本机测试环境,笔者之前已经修改了 hosts 文件,将 google.com 映射为 127.0.0.1

(莫名其妙操作一通,出现了怪现象:)

1)访问 google.com:1000 能显示正常的网页服务;

2)访问 google.com 显示 Nginx 欢迎页,并且 修改 html/index.html 内容,浏览器可以同步更新;

nvim .\logs\error.log 查看日志,记录进出,没有什么有价值的反馈。

不断使用 步骤 2 的终端指令,重启、停止再启动等,结果照旧。

说明最新的配置依然未生效,所谓脏的重启

💉4. 解决 Nginx 脏的重启

配置文件未通过校验、多开进程、无论使用软件指令重启命令多少遍,都会导致重启失败,后果就是沿用上一次启动成功的配置文件,具有非常强的欺骗性,令人懵逼。

尤其在 Windows 这种故意让用户远离终端控制台的平台,更容易迷路:

查看网络活动
资源监视器 : 查看侦听端口(而且不能搜索信息),发现它的 PID 不断变化
在终端查看端口占用情况

   # Windows Powershell
   # 查看端口
   $ netstat -ano | findstr :80
   TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       11952 
   TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       24220 
   TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       25032 
   TCP    127.0.0.1:80           127.0.0.1:59185        FIN_WAIT_2      11952 
   TCP    127.0.0.1:80           127.0.0.1:62108        FIN_WAIT_2      11952 
   TCP    127.0.0.1:80           127.0.0.1:63025        FIN_WAIT_2      11952 
   TCP    127.0.0.1:59185        127.0.0.1:80           CLOSE_WAIT      10488 
   TCP    127.0.0.1:62108        127.0.0.1:80           CLOSE_WAIT      10488 
   TCP    127.0.0.1:63025        127.0.0.1:80           CLOSE_WAIT      10488 

   # 杀掉进程
   $ taskkill /PID 11952 /F                                                                                               
   SUCCESS: 
   The process with PID 11952 has been terminated.

查看任务进程
任务管理器

之前任务管理器这个地方, N 开头的 nginx.exe ,出现了三四个,笔者全部手动结束任务。

至此,一套组合拳下来,Nginx 彻底玩完了。

start nginx

浏览器访问 google.com,配置终于生效了,符合预期效果。

可能原因:刚开始图方便,双击 nginx.exe ,再运行终端指令,导致进程多开了,而且 Nginx 出厂自带的终端命令,没有杀进程的(大多数软件也不会提供这种服务)。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐