Nginx 入门学习记录(一)

Nginx 入门学习记录(一)

前言

因为之前安装这个 Solo 博客系统时,一直没能搞定 Nginx 的反向代理和配置好 SSL,于是乎决定好好看一下 Nginx 的使用方法。
我观看的视频教程地址: https://www.bilibili.com/video/BV1zJ411w7SV

Nginx 的简介

Nginx 是高性能的 HTTP 和反向代理的服务器,因为内存占用少,启动极快,高并发能力强,得到了广泛应用。

nginx 的安装

这里我使用的是 docker 安装的,一行命令即可搞定。
docker run -d --name nginx nginx:latest

因为我参照这边文章{:target="blank"}安装博客系统的,它使用了挂载目录方便后期的调整配置和使用 nginx,所以命令变成了这样

docker run -d --name nginx \
-v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /dockerData/nginx/www:/nginx/share/nginx/html \
-v /dockerData/nginx/ssl:/ssl/ \
-v /dockerData/nginx/logs:/var/log/nginx/nginx \
nginx:latest 

又或者你可以使用包管理命令安装,应该都是可以的
centos: $ yum install nginx
ubuntu $ apt install nginx

nginx 常用命令

$ nginx -s quit 不再接收连接,并在已有连接请求完成后结束进程
$ nginx -s reload 重新载入 nginx.conf 配置文件
$ nginx -s reopen 重新打开日志文件,一般用于切割日志
$ nginx -t 检查 nginx 的配置文件
$ nginx -c filename 指定配置文件

nginx 的配置文件

文件位置: /usr/local/nginx/conf/nginx.conf
有部分情况是,nginx 在 conf 目录下有一个 nginx.conf 文件和一个包含 default.confconf.d 文件夹,nginx.conf 文件在末尾引入了 default.conf 文件,合在一起组成一个配置文件,修改时注意一下。
这里我们仍然以 nginx.conf 单文件为例。

nginx 配置文件的内容

配置文件的内容包含三部分

  1. 全局块配置服务器整体运行的配置指令比如 worker_processes 1;
  2. events 块影响 nginx 服务器与用户的网络连接比如 worker_connections 1024;
  3. http 块
    包含两部分 http 全局块 和 server 块,也就是我们做代理主要配置的地方。

nginx 反向代理

先谈正向代理

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
用上我们最熟悉的例子————VPN,就很容易理解。比如谷歌服务器国内无法直接访问到,可以通过正向代理的方式,就可以得到谷歌返回的内容。
注意这个“代理”是对客户端的代理,服务器端并不知道是客户端通过代理服务器进行的访问。

再谈反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。
注意这个“代理”是对服务器的代理,客户端只知道是反向服务器返回了信息,但是并不知道这次请求在反向服务器进行怎么样的故事。同时,用户也就不需要知道目标服务器的地址,也无须在用户端作任何设定。所以反向服务器通常用于 Web 加速,即使用反向代理作为 Web 服务器的前置机来降低网络和服务器的负载,提高访问效率。

反向代理的实现

准备条件 :

  1. 在服务器上安装好 Tomcat , 使用默认 8080 端口
  2. 防火墙打开了对应端口
    firewall-cmd --add-port=8080/tcp --permanent
    firewall-cmd -reload

配置过程:
修改 nginx 的 nginx.conf 文件,我们修改文件的“httpd 块”

    server {
        listen 80;  //监听80端口
        server_name 123.123.123.123;  //域名或IP地址

        location / {
            proxy_pass 123.123.123.123:8080; //代理的目标位置
        }
    }

当我们浏览器访问 http://123.123.123.123/ 时,默认是 80 端口,nginx 监听到 80 端口有个 123.123.123.123 的请求,会代理到 123.123.123.123:8080 位置。

再比如

    server {
        listen 80; 
        server_name 123.123.123.123;  

        location ~ /abc/ {
            proxy_pass 123.123.123.123:8080; 
        }

        location ~ /def/ {
            proxy_pass 123.123.123.123:8081;
        }
    }

当浏览器访问 http://123.123.123.123/abc/ 时,请求会被代理到 123.123.123.123:8080 位置
当浏览器访问 http://123.123.123.123/abc/ 时,请求会被代理到 123.123.123.123:8081 位置

所以,通过修改 location 和 proxy_pass 的值,可以对应的请求代理到对应的位置上,从而完成反向代理。

后记

因为这是一篇学习记录,所以可能还有没写清的地方,不过在写的过程中也对配置文件的内容加深了理解,有补充下次在编辑。
Nginx 入门学习记录(一)结束。

  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    255 引用 • 479 回帖 • 544 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    746 引用 • 870 回帖 • 552 关注
2 回帖
请输入回帖内容...
  • mymoshou

    B 站现在的学习资料是真的挺多的啊

    1 回复
  • sunbeam

    B 站是个学习网站 😋