nginx入门

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

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

一、背景

  • 什么是nginx
    nginx网上解释的吧啦吧啦一大堆,个人的理解就是可以在用户服务器之间的一个web服务器.有了nginx,我们就可以在用户和服务器中间做一些事情.
    类似于下面这样
    nginx入门
    用户发起请求后,被nginx所接受,nginx就可以对这个请求做一些处理.

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

二、nginx的安装(Windows)

OpenResty是nginx的扩展版本,实际上也就是nginx,当做nginx即可.
下载地址(2020.4.29)
nginx入门
下载后得到一个压缩包,解压到自己想要的文件夹即可.
我解压到了E:\Software\Nginx\OpenResty目录下,点开对应的文件夹,里面的内容是这样的.
nginx入门

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

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

三、nginx的启动

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

nginx.exe

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

  • 重新启动

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

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(命令nginx.exe -s reload)
在浏览器中输入localhost/hello
nginx入门

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

优先级从高到低

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

详情如下图
nginx入门

五、反向代理

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://开头
    nginx入门

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

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

注意

# 后面没有加"/"
       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/;
        }

六、负载均衡

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

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;
        }

    }

}