关于nginx配置
来源:互联网 发布:电脑网络摄像头 编辑:程序博客网 时间:2024/06/05 04:50
提供静态内容服务
通常,配置文件可以包括服务器监听的端口和服务器名称区分的几个server块。当nginx决定哪个服务器处理请求后,它会根据服务器块内部定义的location指令的参数测试请求头中指定的URI。
将以下location块添加到服务器(server)块:
http { server { location / { root /data/www; } }}
该location块指定与请求中的URI相比较的“/”前缀。 对于匹配请求,URI将被添加到root指令中指定的路径(即/data/www),以形成本地文件系统上所请求文件的路径。 如果有几个匹配的location块,nginx将选择具有最长前缀来匹配location块。 上面的location块提供最短的前缀长度为1,因此只有当所有其他location块不能提供匹配时,才会使用该块。
接下来,添加第二个location块:
http { server { location / { root /data/www; } location /images/ { root /data; } }}
它将是以/images/(位置/也匹配这样的请求,但具有较短前缀,也就是“/images/”比“/”长)的请求来匹配。
server块的最终配置应如下所示:
server { root /www/data; location / { } location /images/ { } //以mp3或者mp4结尾会定向到/www/media location ~ \.(mp3|mp4) { root /www/media; }}
设置简单的代理服务器
nginx的一个常见用途是将其设置为代理服务器,这意味着它可作为一个接收请求的服务器,将其传递给代理服务器,从代理服务器中检索响应,并将其发送给客户端。
我们将配置一个基本的代理服务器,它为来自本地目录的文件提供图像请求,并将所有其他请求发送到代理的服务器。 在此示例中,两个服务器将在单个nginx实例上定义。
首先,通过向nginx配置文件添加一个server块来定义代理服务器,其中包含以下内容:
server { listen 8080; root /data/up1; location / { }}
接下来,使用上一节中的服务器配置进行修改,使其成为代理服务器配置。 在第一个位置块中,将proxy_pass指令与参数中指定的代理服务器的协议,名称和端口(在本例中为http://localhost:8080):
server { location / { proxy_pass http://localhost:8080; } location /images/ { root /data; }}
完整的配置nginx.conf文件内容如下
#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; ## 新服务(服务处理) server { listen 8080; root /data/up1; location / { } } ## 代理配置,数据转发 server { location / { proxy_pass http://localhost:8080/; } location ~ \.(gif|jpg|png)$ { root /data/images; } }}
将请求传递给代理的服务器
当NGINX代理请求时,它将请求发送到指定的代理服务器,获取响应,并将其发送回客户端。 可以使用指定的协议将请求代理到HTTP服务器(另一个NGINX服务器或任何其他服务器)或非HTTP服务器(可以运行使用特定框架开发的应用程序,如PHP或Python)。 支持的协议包括FastCGI,uwsgi,SCGI和memcached。
要将请求传递给HTTP代理服务器,则在一个location块内指定proxy_pass指令。 例如:
location /some/path/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:8000;}
配置缓冲区
默认情况下,NGINX缓存来自代理服务器的响应。 响应存储在内部缓冲区中,并且不会发送到客户端,直到收到整个响应。 缓冲有助于通过慢客户端优化性能,如果响应从NGINX同步传递到客户端,这可能会浪费代理服务器时间。 然而,当启用缓冲时,NGINX允许代理服务器快速处理响应,而NGINX存储响应时间与客户端需要下载的时间一样长。 负责启用和禁用缓冲的指令是proxy_buffering。 默认情况下,它被设置为开启且缓冲已启用。 proxy_buffers指令控制分配给请求的缓冲区的大小和数量。 来自代理服务器的响应的第一部分存储在单独的缓冲区中,其大小由proxy_buffer_size指令设置。 这部分通常包含一个比较小的响应头,并且可以比其余的响应的缓冲区小。 在以下示例中,缓冲区的默认数量增加,并且响应的第一部分的缓冲区的大小小于默认值。
location /some/path/ { <!--proxy_buffering off;-->禁用此功能 proxy_buffers 16 4k; proxy_buffer_size 2k; proxy_pass http://localhost:8000;}
选择传出IP地址
如果您的代理服务器有多个网络接口,有时您可能需要选择特定的源IP地址才能连接到代理服务器或上游。 如果NGINX后端的代理服务器只配置为接受来自特定IP网络或IP地址范围的连接,在这种情况下,这个配置选项就很有用。
指定proxy_bind指令和必要网络接口的IP地址:
location /app1/ { proxy_bind 127.0.0.1; proxy_pass http://example.com/app1/;}location /app2/ { proxy_bind 127.0.0.2; proxy_pass http://example.com/app2/;}
- 关于nginx配置
- 关于NGINX ciphers配置
- 关于nginx配置
- 关于nginx的配置虚拟机
- 关于Nginx+tomcat集群配置
- 关于nginx集群配置问题
- 关于nginx的一些配置和错误
- 关于nginx的几个核心配置说明
- 关于nginx支持thinkphp框架的配置
- 关于nginx在tomcat下配置使用
- 关于Nginx配置Https服务器总结
- 关于nginx的几个核心配置说明
- 关于Nginx+tomcat集群+memcached配置前言
- Nginx关于连接超时配置的实验
- 关于 nginx 的配置的 location
- 关于nginx fastcgi 配置的坑
- 关于Django + Nginx + uWSGI 配置总结
- 关于Nginx的详细说明和配置
- 【机器学习】EM算法
- ssm框架详解教程(Spring+SpringMVC+Mybaits)
- tensorflow模型save和restore
- JMeter接口测试实战-参数化
- 学习笔记之面向对象编程25(网络编程)
- 关于nginx配置
- asList的使用缺陷—asList 转成的列表不可操作
- 2017年全球大数据产业报告之海外篇(第八集)
- Unity中实现摇杆功能
- java泛型
- Revit开发之非模态对话框下的外部事件 WPF
- git自动部署
- Python3的re.match()、re.search()和re.findall()
- QT给父控件设置样式不影响子窗体