nginx入门

我也是小白,各位倘若看到一定要带着思考来看.

以下内容皆为个人理解,可能存在错误.

一、背景

  • 什么是nginx
    nginx网上解释的吧啦吧啦一大堆,个人的理解就是可以在用户服务器之间的一个web服务器.有了nginx,我们就可以在用户和服务器中间做一些事情.
    类似于下面这样

    用户发起请求后,被nginx所接受,nginx就可以对这个请求做一些处理.

  • 实例:
    在本地设置nginx为80端口,在浏览器中输入localhost后,请求就转到了nginx中.
       (如果我们nginx中设置将请求转到9596端口)
    用户输入的是localhost,而实际上访问到的是localhost:9596,这就是nginx的作用之一.

二、nginx的安装(Windows)

OpenResty是nginx的扩展版本,实际上也就是nginx,当做nginx即可.
下载地址(2020.4.29)

下载后得到一个压缩包,解压到自己想要的文件夹即可.
我解压到了E:\Software\Nginx\OpenResty目录下,点开对应的文件夹,里面的内容是这样的.

由于刚入门,所以目前我们关注的只有两个东西

  • nginx.exe
  • conf文件夹下的nginx.conf文件
    nginx.exe用于启动nginx,而nginx.conf是我们的配置信息.

三、nginx的启动

  • 首次启动
    nginx.exe目录下,按住shift后点击鼠标右键,选择在此处打开命令窗口.

    命令窗口输入命令

nginx.exe

即可启动nginx.
打开浏览器输入localhost,访问到欢迎页面,说明启动成功.

  • 重新启动

在第一次启动后,发现那个启动窗口好像卡住了,可以重新"此处打开命令窗口",然后输入

nginx.exe -s reload

即可重新启动

  • 关闭nginx

在win系统中,强制结束nginx.exe

taskkill /f /im nginx.exe

扩展
1.查看指定端口的占用情况

netstat -aon|findstr "端口号"
可以看到端口xx被指定进程号(pid)xx的进程占用

2.查看指定pid对应的程序名

tasklist|findstr "pid"

3.按进程名字关闭

taskkill /im xx.exe

4.按进程号关闭

taskkill /pid pid号

5.强行终止

taskkill /f /im xx.exe
taskkill /f /pid pid号

四、nginx的匹配规则

在/conf目录下的nginx.conf文件中,我们可以对nginx进行一些配置.
在http->server下可以对请求进行配置.

  • 请求配置的格式为:

location 规则 请求名{

}

例如配置规则为:

重启nginx(命令nginx.exe -s reload)
在浏览器中输入localhost/hello

  • 根据输入的请求不同,做出的处理也不同.

优先级从高到低

1.  =
2.  ^~
3.  ~
4.  直接写请求名字

详情如下图

五、反向代理

nginx在收到请求后,将请求转到对应的服务器上.
例如配置/a请求在localhost:1234上,而/b请求在localhost:5678上.
可以填写真实的ip地址和端口,只不过此处写的都是本机而已.
这样用户输入localhost/a或者localhost/b,感觉访问的是同一台服务器,但是nginx却分发到了不同的服务器上.
这样服务器对用户来说就是不可见的,你输入的1.1.1.1访问,实际上可能转到了别的ip如2.2.2.2上.

  • 如何设置反向代理

    proxy_pass http://ip:port

    访问localhost,实际上访问到的是127.0.0.1:9596,注意http://开头

直接访问9596端口,可以看到网页如下.

由于设置了反向代理,直接输入localhost也能访问到该页面.

注意

# 后面没有加"/" location /a { # 转到了 http://127.0.0.1:9596/a proxy_pass http://127.0.0.1:9596; } # 后面都加个"/",转到的就是根目录. location /b/ { # 转到了 http://127.0.0.1:9596,最后也有个"/" proxy_pass http://127.0.0.1:9596/; }

六、负载均衡

通过上面的内容我们可以知道,我们可以配置实际访问的服务器.
这样访问同一个请求,可以让不同的服务器去处理,减轻了服务器的压力.

worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; #是ip地址没有http upstream group1{ server 127.0.0.1:1234 weight=1; server 127.0.0.1:5678 weight=5; } server { listen 80; server_name localhost; # 设置格式 default_type text/html; #替代group1 location /b/ { proxy_pass http://group1/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }

__EOF__

本文作者羊37
本文链接https://www.cnblogs.com/yang37/p/12805585.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   羊37  阅读(215)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示