nginx配置笔记

简介: 记录一下 后面继续加

nginx 基础解释

Nginx 服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的 Nginx 服务器重要功能,比如后面会介绍的负载均衡。先说反向代理,讲反向代理首先介绍一下正向代理。
在Java设计模式中,代理模式是这样定义的:给某个对象提供一个代理对象,并由代理对象控制原对象的引用
正向代理:举一个打击都接触过的vpn,国内IP访问不了Google的,要想在国内使用Google,则需要配置vpn,使用vpn将自己的IP地址变成美国的IP地址,这样就可以访问了。正向代理服务器是位于客户端和目标服务器之间的,为了向目标服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器把目标服务器返回的数据返回转交给客户端,这里需要客户端进行一些正向代理的设置的。
image.png
反向代理:客户端将请求发送到反向代理服务器,由代理服务器去选择目标服务器去获取数据,拿到数据后再去回传给客户端,此时反向代理服务器其实和目标服务器是一个服务器,暴露的是代理服务器的地址,隐藏了正式服务器的地址;
image.png
总结:正向代理代理客户端,反向代理代理服务器。

1、nginx反向代理相关指令解释:

①、listen
该指令用于配置网络监听。主要有如下三种配置语法结构:
 一、配置监听的IP地址
listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] deferred [bind] [ssl];
二、配置监听端口
listen port[default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [ssl];
 三、配置 UNIX Domain Socket
listen unix:path [default_server] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ssl];
1 listen :80 | :8080 #监听所有80端口和8080端口
2 listen IP_address:port #监听指定的地址和端口号
3 listen IP_address #监听指定ip地址所有端口
4 listen port #监听该端口的所有IP连接

1、address:IP地址,如果是 IPV6地址,需要使用中括号[] 括起来,比如[fe80::1]等。
2、port:端口号,如果只定义了IP地址,没有定义端口号,那么就使用80端口。
3、path:socket文件路径,如 var/run/nginx.sock等。
4、default_server:标识符,将此虚拟主机设置为 address:port 的默认主机。(在 nginx-0.8.21 之前使用的是 default 指令)
5、 setfib=number:Nginx-0.8.44 中使用这个变量监听 socket 关联路由表,目前只对 FreeBSD 起作用,不常用。
6、backlog=number:设置监听函数listen()最多允许多少网络连接同时处于挂起状态,在 FreeBSD 中默认为 -1,其他平台默认为511.
7、rcvbuf=size:设置监听socket接收缓存区大小。
8、sndbuf=size:设置监听socket发送缓存区大小。
9、deferred:标识符,将accept()设置为Deferred模式。
10、accept_filter=filter:设置监听端口对所有请求进行过滤,被过滤的内容不能被接收和处理,本指令只在 FreeBSD 和 NetBSD 5.0+ 平台下有效。filter 可以设置为 dataready 或 httpready 。
11、bind:标识符,使用独立的bind() 处理此address:port,一般情况下,对于端口相同而IP地址不同的多个连接,Nginx 服务器将只使用一个监听指令,并使用 bind() 处理端口相同的所有连接。
12、ssl:标识符,设置会话连接使用 SSL模式进行,此标识符和Nginx服务器提供的 HTTPS 服务有关。
②、server_name
  该指令用于虚拟主机的配置。通常分为以下两种:
  1、基于名称的虚拟主机配置
  语法格式如下:
server_name name ...;
  一、对于name 来说,可以只有一个名称,也可以有多个名称,中间用空格隔开。而每个名字由两段或者三段组成,每段之间用“.”隔开。
server_name 123.com www.123.com
  二、可以使用通配符“*”,但通配符只能用在由三段字符组成的首段或者尾端,或者由两端字符组成的尾端。
server_name .123.com www.123.
  三、还可以使用正则表达式,用“~”作为正则表达式字符串的开始标记。
server_name ~^www\d+.123.com$;
  该表达式“~”表示匹配正则表达式,以www开头(“^”表示开头),紧跟着一个0~9之间的数字,在紧跟“.123.co”,最后跟着“m”($表示结尾)
  以上匹配的顺序优先级如下:
1 ①、准确匹配 server_name
2 ②、通配符在开始时匹配 server_name 成功
3 ③、通配符在结尾时匹配 server_name 成功
4 ④、正则表达式匹配 server_name 成功
  2、基于 IP 地址的虚拟主机配置
  语法结构和基于域名匹配一样,而且不需要考虑通配符和正则表达式的问题。
server_name 192.168.1.1
③、location
  该指令用于匹配 URL。
  语法如下:
location [ = | ~ | ~* | ^~] uri {}
  1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
  2、~:用于表示 uri 包含正则表达式,并且区分大小写。
 3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
  4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
  注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。
④、proxy_pass
  该指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式。
  语法结构如下:
proxy_pass URL;
  URL 为被代理服务器的地址,可以包含传输协议、主机名称或IP地址加端口号,URI等。
proxy_pass http://www.123.com/uri;
⑤、index
  该指令用于设置网站的默认首页。
  语法为:
index filename ...;
  后面的文件名称可以有多个,中间用空格隔开。
index index.html index.jsp;

2 nginx 基础配置(try_files)解释

try_files是nginx中http_core拥有的指令,主要是能替代一些rewrite的指令,提高解析效率。官网的文档为 http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files

2.1 try_files 语法规则

格式1:try_files ...uri;
格式2:try_files file...=code;
两者皆可用于应用的上下文:server和location段
语法关键点1:按指定的file顺序查找存在的文件,并使用第一个找到的文件进行处理
语法关键点2:查找路径是按照给定的root或者alias为根路径来查找的
语法关键点4:如果给出的file都没有匹配到,则会请求到最后一个参数给定的uri
语法关键点4:如果给出的file都没有匹配到的话,如果最后一个参数是= 404 返回404
举例说明:

    location /images/{
         alias  /opt/com/;
         try_files $uri $uri/ /images/default.html;
    }

比如请求127.0.0.1/images/yy.html 会依次查找
1:opt/com/images/yy.html
2:opt/com/images/
3:直接请求127.0.0.1/images/yy.html
4:匹配不到到 返回指定的返回码 code

2.2 nginx 配置(try_files)示例

alias {前端文件根目录}/;

    try_files 具体的某一个html
     #前端有几个微应用则需配几个子location 
    location /formdesign {
         alias  /opt/com/ss/yy;
         try_files $uri $uri/ /index/index.html;
    }

2.3 nginx 配置(try_files)注意事项

try_files 如果不写上$uri/,当访问一个目录路径时,并不会去匹配目录下的索引页 即是:访问127.0.0.1/html 找不到的情况下不会去访问127.0.0.1/images/index.html

目录
相关文章
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
1104 87
|
10月前
|
编解码 应用服务中间件 Linux
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
739 1
|
负载均衡 应用服务中间件 nginx
Nginx配置与命令
Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。
1194 14
|
10月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
530 18
|
10月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
900 17
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
1473 7
|
11月前
|
数据建模 应用服务中间件 PHP
配置nginx容器和php容器协同工作成功,使用ip加端口的方式进行通信
本示例演示如何通过Docker挂载同一宿主目录至Nginx与PHP容器,实现PHP项目运行环境配置。需注意PHP容器中监听地址修改为0.0.0.0:9000,并调整Nginx配置中fastcgi_pass指向正确的IP与端口。同时确保Nginx容器中/var/www/html权限正确,以避免访问问题。
配置nginx容器和php容器协同工作成功,使用ip加端口的方式进行通信
|
应用服务中间件 网络安全 nginx
配置Nginx以支持Websocket连接的方法。
通过上述配置,Nginx将能够理解WebSocket协议的特殊要求,代理Websocket流量到合适的后端服务器。注意,Websocket并不是HTTP,尽管它最初是通过HTTP请求启动的连接升级,因此保证Nginx了解并能够妥善处理这种升级流程是关键。
2423 10
|
11月前
|
Ubuntu 应用服务中间件 Linux
在Ubuntu上配置Nginx实现开机自启功能
至此,Nginx应该已经被正确地设置为开机自启。在Ubuntu中利用 `systemd`对服务进行管理是一种高效的方式,为系统管理员提供了强大的服务管理能力,包括但不限于启动、停止、重启服务,以及配置服务的开机自启动。通过这些简洁的命令,即使是对Linux不太熟悉的用户也能轻松地进行配置。
503 0
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
1482 152