一、Nginx 快速入门
1、Nginx 概述
1.1 介绍
Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/PoP3)代理服务器。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力在同类型的网页服务器中表现较好,中国大陆使用 nginxl 的网站有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx:是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:PaM6nep)开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。Stable version 为稳定版。
官网:https:/nginx.org/
2、 Nginx 下载和安装
2.1 Linux 安装
❗注:默认使用的为 CentOS 7
❗
-
安装依赖包 yum -y install gcc pcre-devel zlib-devel openssl openss1-devel
Nginx 通过 C 语言编写的,gcc 用于编译 C 语言程序,以及其他依赖包
-
下载 Nginx 安装包
- wget https://nginx.org/download/nginx-1.16.1.tar.gz(官网安装包网址下载)
- 先在 Windows 上下载,再传到 Linux 上
-
进入 nginx 所在目录,解压 tar -zxvf nginx-1.16.1.tar.gz [-C /usr/local/nginx 可以不写]
-
./configure --prefix=/usr/local/nginx (该命令不会创建目录,需要自建该目录)
-
make && make install
在/usr/local/nginx 目录中会生成 conf,html,logs,sbin 四个目录。
wget :下载指定网址上的资源。wget 命令不存在:通过 yum 安装该命令即可。
yum install wget
./configure :nginx-1.16.1.tar 文件夹中有一个 configure 文件,用于安装到指定目录。并不是真正安装,只是用于安装前检测一下安装环境
make && make install:编译,编译后安装。此步用于真正编译与安装
2.2 Windows 安装
2.3 Docker 安装
3、Nginx 目录结构
重点目录/文件:
目录 | 含义 |
---|---|
conf/nginx.conf | nginx配置文件 |
html | 存放静态文件(html、cSS、Js等) |
logs | 日志目录,存放日志文件 |
sbin/nginx | 二进制文件,用于启动、停止Nginx服务 |
如果想在 Linux 中以树形结果查看文件目录时,可以使用 tree。可以通过 yum install tree 安装该命令。
4、 Nginx 常用命令
4.1 常用命令
根据 nginx 目录所在位置使用如下命令。(此处在 sbin 文件夹下)命令前必须加./
-
查看版本(必须加./)
./nginx -v
-
检查配置文件正确性
./nginx -t
-
启动和停止
启动:./nginx
停止:./nginx -s stop
启动完成后查看 Nginx 进程:ps -ef | grep nginx
-
重新加载配置文件
./nginx -s reload
4.2 将 nginx 配置到环境变量
为了简化 nginx 命令,可以将 nginx 二进制目录配到系统环境变量中
-
进入 /etc/profile 文件
-
将二进制目录配置到 PATH 中,: 用于将不同 path 分隔开。
-
让 /etc/profile 立即生效
source /etc/profile
-
测试是否生效
例如:任意目录下使用 nginx -s reload ,不再显示 command not found 则表示配置成功
5、Nginx 配置文件结构
# 全局块:和Nginxi运行相关的全局配置
#user nobody;
worker_processes 1;
# events块:和网络连接相关的配置
events {
# 每个worker最多处理的连接数。
worker_connections 1024;
}
# http 块:代理、缓存、日志记录、虚拟主机配置
http {
# http 全局块
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# server 块
server {
# server 全局块
listen 80;
server_name localhost;
# location 块
location / {
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
❗注意:http 块中可以配置多个 Server:块,每个 Serveri 块中可以配置多个 location 块。
6、具体应用
Nginx 可以用于部署静态资源,反向代理和负载均衡。
6.1 部署静态资源
Nginx 可以作为静态 wb 服务器来部署静态资源。静态资源指在服务端真实存在并且能够直接展示的一些文件,比如常见的 html 页面、css 文件、js 文件、图片、视频等资源。相对与 Tomcat,Nginx 处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到 Nginx 中。
将静态资源部署到 Nginx 非常简单,只需要将文件复制到 Nginx 安装目录下的 html 目录中即可。
# server 块
server {
# server 全局块
listen 80; # 监听的端口
server_name localhost; # 服务器名称
# location 块
location / { # 匹配客户端请求url
root html; # 指定静态资源根目录,默认加载该目录下的静态资源
index index.html index.htm; # 加载的默认首页面,第一个没有加载第二个,以此类推。
}
6.2 反向代理
正向代理
是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问 Internet 的途径。正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。
反向代理
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器
,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。用户不需要知道目标服务器的地址,也无须在用户端作任何设定。
案例:
# 当前服务位与 http://192.168.138.101 之外的服务器。
server {
# server 全局块
listen 81; # 监听的端口
server_name localhost; # 服务器名称
# location 块
location / { # 匹配客户端请求url
proxy_pass http://192.168.138.101; # 反向代理配置,将请求转发到指定服务
}
6.3 负载均衡
早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。
- 应用集群:将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据
- 负载均衡器:将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理
负载均衡策略
名称 | 说明 |
---|---|
weight | 权重方式 |
ip_hash | 依据IP分配方式 |
least_conn | 依据最少连接方式 |
url_hash | 依据url分配方式 |
fair | 依据响应时间方式 |
轮询 | 默认方式 |
案例:
# upstream可以定义一组服务器
upstream targetserver{
server http://192.168.138.101:8080;
server http://192.168.138.101:8081;
}
server {
# server 全局块
listen 81; # 监听的端口
server_name localhost; # 服务器名称
# location 块
location / { # 匹配客户端请求url
proxy_pass http://targetserver; # 反向代理配置,将请求转发到指定服务
}
7、踩坑!
6.1 Nginx 安装问题
问题描述:
将 nginx 安装在 /root/data/nginx/sbin/ 下,使用的默认生成的文件,未修改,启动时一切正常,
本地访问 nginx 时,访问被拒绝了,
查看错误日志。
原因是:权限不足。
原因
启动用户和 nginx 工作用户不一致所致?
查看 启动用户和工作用户是一直的。
nginx.conf 改成 root 就可以了。为什么?
标签:入门,nginx,server,Nginx,html,服务器,快速,目录 From: https://www.cnblogs.com/9fall/p/17055910.html