本文介绍如何将NGINX配置作为Web服务器,并包括以下部分:
1. 设置虚拟服务器
2. 配置位置
3. 使用变量
4. 返回特定状态码
5. 重写请求中的URI
6. 重写HTTP响应
7. 处理错误
在高层次上,将NGINX配置作为Web服务器有一些问题需要了解,定义它处理哪些URL以及如何处理这些URL上的资源的HTTP请求。 在较低层次上,配置定义了一组控制对特定域或IP地址的请求的处理的虚拟服务器。
用于HTTP流量的每个虚拟服务器定义了称为位置的特殊配置实例,它们控制特定URI集合的处理。 每个位置定义了自己的映射到此位置的请求发生的情况。 NGINX可以完全控制这个过程。 每个位置都可以代理请求或返回一个文件。 此外,可以修改URI,以便将请求重定向到另一个位置或虚拟服务器。 此外,可以返回特定的错误代码,也可以配置特定的页面以对应于每个错误代码。
#### 1. 设置虚拟服务器
NGINX配置文件必须至少包含一个服务器指令来定义虚拟服务器。
当NGINX处理请求时,它首先选择提供请求的虚拟服务器。
虚拟服务器由http上下文中的服务器指令定义,例如:
~~~
http {
server {
# Server configuration
}
}
~~~
可以将多个server指令添加到http上下文中以定义多个虚拟服务器。
server配置块通常包括一个listen指令,用于指定服务器侦听请求的IP地址和端口(或Unix域套接字和路径)。IPv4和IPv6地址均被接受; 下面的示例显示了监听IP地址127.0.0.1和端口8080的服务器的配置:
~~~
server {
listen 127.0.0.1:8080;
# The rest of server configuration
}
~~~
如果省略端口,则使用标准端口。 同样地,如果省略一个地址,服务器将侦听所有地址。
如果没有包含listen指令,则“标准”端口为`80/tcp`,“default”端口为`8000/tcp`,具体取决于超级用户权限。
如果有多个服务器与请求的IP地址和端口相匹配,则NGINX将根据服务器块中的server_name指令测试请求的主机头域。 server_name的参数可以是完整(精确)名称,通配符或正则表达式。 通配符是一个字符串,其开头,结尾或两者都包含星号`(*);` 星号匹配任何字符序列。 NGINX将Perl语法用于正则表达式; 在它们之前使用波浪号(〜)。
此示例说明了一个确切的名称。
~~~
server {
listen 80;
server_name example.org www.example.org;
...
}
~~~
如果匹配主机头几个名称,则NGINX通过按以下顺序搜索名称并使用其找到的第一个匹配来选择一个:
* 确切的名字(完整准确的名称)
* 以星号开头的最长通配符,例如:*.example.org
* 以星号结尾的最长通配符,如:mail.*
* 第一个匹配正则表达式(按照出现在配置文件中的顺序)
如果主机头字段与服务器名称不匹配,则NGINX会将请求路由到请求到达端口的默认服务器。 默认服务器是nginx.conf文件中列出的第一个服务器,除非您将listen_server参数包含在listen指令中以明确指定服务器为默认值。
~~~
server {
listen 80 default_server;
...
}
~~~
一个完整的Nginx虚拟机配置示例,这里我们演示配置两个虚拟机,对应域名分别为:`vhost1.com` 和` vhost2.com`,vhost1.com网站的主目录在`/data/www/vhost1`,vhost2.com网站的主目录在`/data/www/vhost2`:
~~~
server {
listen 80;
server_name vhost1.com www.vhost1.com;
index index.html index.html;
root /data/www/vhost1;
access_log /var/log/vhost1.com.log;
}
server {
listen 80;
server_name vhost2.com www.vhost2.com;
index index.html index.html;
root /data/www/vhost2;
access_log /var/log/vhost2.com.log;
}
~~~
#### 4. 返回特定状态码
一些网站URI需要立即返回具有特定错误或重定向代码的响应,例如当页面被暂时移动或永久移动时。 最简单的方法是使用return指令。 例如返回未找到的404状态码:
~~~
location /wrong/url {
return 404;
}
~~~
返回的第一个参数是响应代码。可选的第二个参数可以是重定向的URL(代码301,302,303和307)或在响应体中返回文本。 例如:
~~~
location /permanently/moved/url {
return 301 http://www.example.com/moved/here;
}
~~~
返回指令可以包含在 location 和 server 上下文中。
使用error_page指令,您可以配置NGINX返回自定义页面以及错误代码,替换响应中的其他错误代码,或将浏览器重定向到其他URI。 在以下示例中,error_page指令指定要返回404页面错误代码的页面(/404.html)。
~~~
error_page 404 /404.html;
~~~
请注意,此伪指令并不立即返回该错误(返回指令执行该操作),而仅仅是指定发生时如何处理错误。 错误代码可以来自代理服务器,或者在NGINX处理期间发生(例如,当NGINX找不到客户端请求的文件时,显示404对应的结果)。
在以下示例中,当NGINX找不到页面时,它会将代码301替换为代码404,并将客户端重定向到`http:/example.com/new/path.html`。 当客户端仍尝试访问其旧URI的页面时,此配置非常有用。
301代码通知浏览器页面已经永久移动,并且需要在返回时自动替换旧地址。
~~~
location /old/path.html {
error_page 404 =301 http:/example.com/new/path.html;
}
~~~
* * * * *
https://www.yiibai.com/nginx/nginx-web-server.html
- 目录
- W3School
- 工具
- 手册
- 实验
- 慕课
- Linux软件安装管理
- RPM包安装
- yum安装
- Linux系统管理
- ps_mem
- uname
- CentOS版本
- Linux服务管理
- Linux权限管理
- Linux 权限控制的基本原理
- Linux网络管理
- Linux计划任务
- Crontab
- 任务启停
- 综合用例
- 间隔任务
- 一次任务
- 跨天任务
- 输出重定向
- Crontab任务权限
- 多任务
- 表达式
- 视频教程
- 不知疲倦的时间表
- 发送邮件
- nginx
- nginx入门到实践
- Nginx配置Web服务器
- 查看进程
- 配置步骤
- nginx升级
- 脚本升级
- systemctl 命令完全指南
- Linux 软件安装目录
- 查看文件安装路径
- 书籍
- 《Linux Shell脚本攻略》
- 《循序渐进Linux》
- 课程
- Linux典型应用
- 网址
- 通信
- MySQL开启远程连接
- 防火墙
- 安全组规则
- Mailx
- 介绍
- 安装
- 配置
- 发送邮件
- 163_email
- 安全
- Linux中root账号和普通账号有什么区别,root账号为什么不能删除?
- chmod改变文件权限
- SELinux入门