• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >服务器硬件 > 这些nginx安装配置你都了解吗

这些nginx安装配置你都了解吗

作者:xinwang 字体:[增加 减小] 来源:互联网

本文主要包含等服务器相关知识,xinwang希望可以进行参考
Nginx多用于配置Web服务器。抽象来说,将Nginx配置为Web服务器就是定义处理哪些 URLS 和如何处理这些URLS 对应的请求,定义一些虚拟服务器,控制具有特定 IP 和域名的请求。Nginx 通过定义一系列 locations 来控制对 URIS 的选择。每一个 location 定义了对映射到自己的请求的处理场景,返回一个文件或者代理请求,或者根据不同的错误代码返回不同的错误页面。另外,根据 URI 的不同,请求也可以被重定向到其它。下面就由小编和大家讲一讲nginx安装配置。

一、设置虚拟服务器

listen:

Nginx 配置文件至少包含一个 server 命令 ,用来定义虚拟服务器。当请求到来时, Nginx 会首先选择一个虚拟服务器来处理该请求。

虚拟服务器定义在 http 上下文中的 server 中:

http{

server{

#Serverconfiguration

}

}

注意: http 中可以定义多个 server

server 配置块使用 listen 命令监听本机 IP 和端口号(包括 Unix domain socket and path),支持 IPv4、IPv6,IPv6地址需要用方括号括起来:

server{

listen127.0.0.1:8080;#IPv4地址,8080端口

#listen[2001:3CA1:10F:1A:121B:0:0:10]:80;#IPv6地址,80端口

#listen[::]:80;#听本机的所有IPv4与IPv6地址,80端口

#Therestofserverconfiguration

}

上述配置,如果不写端口号,默认使用80端口,如果不写 IP ,则监听本机所有 IP。

server_name:

如果多个 server 的 listen IP 和端口号一模一样, Nginx 通过请求头中的 Host

与 server_name 定义的主机名进行比较,来选择合适的虚拟服务器处理请求:

server{

listen80;

server_namelufficc.comwww.lufficc.com;

...

}

server_name 的参数可以为:

1、完整的主机名,如:api.lufficc.com 。

2、含有通配符(含有 *),如:*.lufficc.com 或 api.* 。

3、正则表达式,以 ~ 开头。

通配符只能在开头或结尾,而且只能与一个 . 相邻。www.*.example.org 和 w*.example.org均无效。 但是,可以使用正则表达式匹配这些名称,例如 ~^www\..+\.example\.org$ 和~^w.*\.example\.org$ 。 而且 * 可以匹配多个部分。 名称 * .example.org 不仅匹配www.example.org,还匹配www.sub.example.org。

对于正则表达式:Nginx 使用的正则表达式与 Perl 编程语言(PCRE)使用的正则表达式兼容。 要使用正则表达式,且必须以 ~ 开头。

命名的正则表达式可以捕获变量,然后使用:

server{

server_name~^(www\.)?(?.+)$;

location/{

root/sites/$domain;

}

}

小括号 () 之间匹配的内容,也可以在后面通过 $1 来引用,$2 表示的是前面第二个 () 里的内容。因此上述内容也可写为:

server{

server_name~^(www\.)?(.+)$;

location/{

root/sites/$2;

}

}

一个 server_name 示例:

server{

listen80;

server_nameapi.lufficc.com*.lufficc.com;

...

}

同样,如果多个名称匹配 Host 头部, Nginx 采用下列顺序选择:

1、完整的主机名,如 api.lufficc.com。

2、最长的,且以 * 开头的通配名,如:*.lufficc.com。

3、最长的,且以 * 结尾的通配名,如:api.* 。

4、第一个匹配的正则表达式。(按照配置文件中的顺序)

即优先级:api.lufficc.com > *.lufficc.com > api.* > 正则。

如果 Host 头部不匹配任何一个 server_name ,Nginx 将请求路由到默认虚拟服务器。默认虚拟服务器是指:nginx.conf 文件中第一个 server 或者 显式用 default_server 声明:

server{

listen80default_server;

...

}

二、配置 location

URI 与 location 参数的匹配

当选择好 server 之后,Nginx 会根据 URIs 选择合适的 location 来决定代理请求或者返回文件。

location 指令接受两种类型的参数:

1、前缀字符串(路径名称)

2、正则表达式

对于前缀字符串参数, URIs 必须严格的以它开头。例如对于 /some/path/ 参数,可以匹配/some/path/document.html ,但是不匹配 /my-site/some/path,因为 /my-site/some/path 不以/some/path/ 开头。

server{

listen80default_server;

...

}

对于正则表达式,以 ~ 开头表示大小写敏感,以 ~* 开头表示大小写不敏感。注意路径中的 . 要写成 \. 。例如一个匹配以 .html 或者 .htm 结尾的 URI 的 location:

location~\.html?{

...

}

正则表达式的优先级大于前缀字符串。如果找到匹配的前缀字符串,仍继续搜索正则表达式,但如果前缀字符串以 ^~ 开头,则不再检查正则表达式。

三、具体的搜索匹配流程如下:

1、将 URI 与所有的前缀字符串进行比较。

2、= 修饰符表明 URI 必须与前缀字符串相等(不是开始,而是相等),如果找到,则搜索停止。

3、如果找到的最长前缀匹配字符串以 ^~ 开头,则不再搜索正则表达式是否匹配。

4、存储匹配的最长前缀字符串。

5、测试对比 URI 与正则表达式。

6、找到第一个匹配的正则表达式后停止。

7、如果没有正则表达式匹配,使用 4 存储的前缀字符串对应的 location。

= 修饰符拥有最高的优先级。如网站首页访问频繁,我们可以专门定义一个 location 来减少搜索匹配次数(因为搜索到 = 修饰的匹配的 location 将停止搜索),提高速度:

location=/{

...

}

四、静态文件和代理

location 也定义了如何处理匹配的请求:返回静态文件 或者 交给代理服务器处理。下面的例子中,第一个 location 返回 /data 目录中的静态文件,第二个 location 则将请求传递给https://lufficc.com 域名的服务器处理:

server{

location/images/{

root/data;

}

location/{

proxy_passhttps://lufficc.com;

}

}

root 指令定义了静态文件的根目录,并且和 URI 拼接形成最终的本地文件路径。如请求/images/example.png,则拼接后返回本地服务器文件 /data/images/example.png 。

proxy_pass 指令将请求传递到 URL 指向的代理服务器。让后将来自代理服务器的响应转发给客户端。 在上面的示例中,所有不以 /images / 开头的 URI 的请求都将传递给代理服务器处理。

比如我把 proxy_pass 设置为 https://www.baidu.com/,那么访问 http://search.lufficc.com/ 将得到百度首页一样的响应(页面)(感兴趣的童鞋可以自己试一试搜索功能,和百度没差别呢):

server{

listen80;

server_namesearch.lufficc.com;

location/{

proxy_passhttps://www.baidu.com;

}

}

五、使用变量(Variables)

你可以使用变量来使 Nginx 在不同的请求下采用不同的处理方式。变量是在运行时计算的,用作指令的参数。 变量由 $ 开头的符号表示。 变量基于 Nginx 的状态定义信息,例如当前处理的请求的属性。

有很多预定义变量,例如核心的 HTTP 变量,你也可以使用 set,map 和 geo 指令定义自定义变量。 大多数变量在运行时计算,并包含与特定请求相关的信息。 例如,$remote_addr 包含客户端 IP 地址,$uri 保存当前URI值。

一些常用的变量如下:


一个简单的应用就是从 http 重定向到 https 时带上路径信息:

server{

...

return301https://lufficc.com$request_uri;

...

}

六、返回特定状态码

如果你的网站上的一些资源永久移除了,最快最简洁的方法就是使用 return 指令直接返回:

location/wrong/url{

return404;

}

return 的第一个参数是响应代码。可选的第二个参数可以是重定向(对应于代码301,302,303和307)的 URL 或在响应正文中返回的文本。 例如:

location/permanently/moved/url{

return301http://www.example.com/moved/here;}

return 指令可以包含在 location 和 server 上下文中:

server{

location/{

return404;

}

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 数字证书怎么办理?数字证书的工作原理是什么?
  • 便宜云主机是否靠谱?云主机要怎么挑选?
  • dhcp服务器是什么,它就是最牛最安全的服务器
  • 网店服务器租用方法有哪些?大带宽服务器适合哪些领域?
  • 云服务器怎么玩?云服务器具备什么优势?
  • 网站cc防御的步骤
  • 国内海外vps免备案的优势有哪些?
  • 云服务器费用一年多少钱 云服务器用不用购买流量
  • 给你们科普一下应用服务器和web服务器的区别
  • 云计算成为冬奥的重要组成

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 云服务器和云虚拟主机两者之间有着怎样的区别?
    • 服务器租用 服务器托管两者各有什么优缺点?应如何选择?
    • 在线云主机有什么功能?云主机有什么特征?
    • 什么是ssl证书?哪些企业提供ssl证书服务器
    • 手机云空间是必须要买吗?手机上的云空间怎么用?
    • 运维技术服务方向有哪些 运维行业前景怎样
    • 天服务器租用价格多少钱?如何选择靠谱的服务器商?
    • ssl证书是怎么申请的 ssl证书如何使用
    • 什么是云主机 mysql,有哪些优势?
    • 云计算运维和传统运维有何区别?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有