当前位置:首页 > 教程 > 正文内容

nginx处理返回内容(nginx返回文件内容)

2023-04-23 16:30:05教程1

nginx返回文件内容

第一种:Nginx自己的错误页面

Nginx访问一个静态的html 页面,当这个页面没有的时候,Nginx抛出404,那么如何返回给客户端404呢?

看下面的配置,这种情况下不需要修改任何参数,就能实现这个功能。

server {

listen 80;

server_name www.test.com;

root /var/www/test;

index index.html index.htm;

location / {

}

# 定义错误页面码,如果出现相应的错误页面码,转发到那里。

error_page 404 403 500 502 503 504 /404.html;

# 承接上面的location。

location = /404.html {

# 放错误页面的目录路径。

root /usr/share/nginx/html;

}

}

第二种:反向代理的错误页面

如果后台Tomcat处理报错抛出404,想把这个状态叫Nginx反馈给客户端或者重定向到某个连接,配置如下:

upstream www {

server 192.168.1.201:7777 weight=20 max_fails=2 fail_timeout=30s;

ip_hash;

}

server {

listen 80;

server_name www.test.com;

root /var/www/test;

index index.html index.htm;

location / {

if ($request_uri ~* ‘^/$’) {

rewrite .* http://www.test.com/index.html redirect;

}

# 关键参数:这个变量开启后,我们才能自定义错误页面,当后端返回404,nginx拦截错误定义错误页面

proxy_intercept_errors on;

proxy_pass http://www;

proxy_set_header HOST $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-FOR $proxy_add_x_forwarded_for;

}

error_page 404 /404.html;

location = /404.html {

root /usr/share/nginx/html;

}

}

第三种:Nginx解析php代码的错误页面

如果后端是php解析的,需要加一个变量

在http段中加一个变量

fastcgi_intercept_errors on就可以了。

指定一个错误页面:

error_page 404 /404.html;

location = /404.html {

root /usr/share/nginx/html;

}

指定一个url地址:

error_page 404 /404.html;

error_page 404 = http://www.test.com/error.html;

nginx 返回报文大小限制

一般情况下是因为文件不存在,然后的提示。但根据你的描述,十次请求的话,就有一次head出现404,那文件存在以前权限可以排除1、试检查一下nginx.conf的设置,是不是有limit的设置,比如limit_zone、limit_conn,这些参数也是有影响的。

2、检查一下防火墙,是不是有相关的设置限制。

3、检查一下nginx.conf的设置,看看有没有valid_referers none blocked的防链设置。

nginx返回302

某链接在微博客户端打开报405不允许的错误已解决。

原因:该链接应该是get请求,微博客户端是以post请求的,nginx处理静态页面不允许post请求,否则就报405。

解决:在nginx层将报错405的链接修改为get请求,

nginx 返回指定文件

nginx返回对应请求数据 可以以获取http get或post参数的值,拼成json格式,返回给客户端为例子。使用nginx lua中的ngx.req.get_post_args()获取post中的arg的值,使用ngx.var.arg_PARAMETER获取get中PARAMETER的值,最终实现location配置文件。

nginx直接返回应答数据

1.DHCP

DHCP 的全名是 “Dynamic Host Configuration Protocol”,即动态主机配置协议。在使用 DHCP 的网络里,用户的计算机可以从 DHCP 服务器那里获得上网的参数,几乎不需要做任何手工的配置就可以上网。 一般情况下,DHCP 服务器会尽量保持每台计算机使用同一个 IP 地址上网。如果计算机长时间没有上网或配置为使用静态地址上网,DHCP 服务器就会把这个地址分配给其他计算机。

2.WINS

WINS 是 “Windows Internet Name Service” 的简称,中文为 Windows 网际命名服务,WINS 服务器主要用于 NetBIOS 名字(计算机名称)服务,它处理的是 NetBIOS 计算机名 (Computer Name),所以也被称为 NetBIOS 名字服务器 (NBNS,NetBIOS Name Server)。WINS 服务器可以登记 WINS-enabled 工作站 (下面简称为 “WINS 工作站”) 的计算机名、IP 地址、DNS 域名等数据,当工作站查询名字时,它又可以将这些数据提供给工作站。

3.DNS

DNS,Domain Name System 或者 Domain Name Service(域名系统或者域名服务)。域名系统为 Internet 上的主机分配域名地址和 IP 地址。用户使用域名地址,该系统就会自动把域名地址转为 IP 地址。域名服务是运行域名系统的 Internet 工具。执行域名服务的服务器称之为 DNS 服务器,通过 DNS 服务器来应答域名服务的查询。

4.FTP 文件传输协议

FTP (File Transfer Protocol) 是 Internet 传统的服务之一。FTP 使用户能在两个联网的计算机之间传输文件,它是 Internet 传递文件最主要的方法。使用匿名 (Anonymous) FTP, 用户可以免费获取 Internet 丰富的资源。除此之外,FTP 还提供登录、目录查询、文件操作及其他会话控制功能。

5.SMTP

SMTP (Simple Mail Transfer Protocol) 即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过 SMTP 协议所指定的服务器,我们就可以把 E-mail 寄到收信人的服务器上了,整个过程只要几分钟。SMTP 服务器则是遵循 SMTP 协议的发送邮件服务器,用来发送或中转你发出的电子邮件。

6.Telnet

有的时候我们需要运行一些很大的程序,而自己的 PC 又达不到运行这个程序所必须的配置,在这种情况下,我们可以通过网络连接上一台功能强大的计算机,并且把自己的 PC 模拟成那台计算机的终端,进而达到在该计算机上运行程序的目的。这种利用网络远程登录到其他计算机上,并且以虚拟终端方式遥控程序运行的做法就是 TELNET。随着计算机硬件的发展,目前 TELNET 在一般网络用户中已经不是很普遍了,但是对于网络管理员来说,它仍然是个得力助手。

7. 互联网上的网络服务

顾名思义,即网络上的服务,不仅仅是指电脑处理各种动作或者协议的程序!在互联网上,有为网民提供各种各样的服务,那也叫做网络服务!如:在网络上提供网络打字,网络排版,远程网站更新,网站美工,网站客服以及一些网上代理等等!这些都叫网络服务,属于广义的网络服务!像这样的一些服务可以在淘宝网上都能找到!如:5K 网络服务等等!

nginx返回json文件

给一套我用过的解决方案,用来开发过web项目(网页 + ios)和手游项目(ios + 安卓),都是一套后台对应多种前端平台:web框架:DjangoDjango 是一套相对全(zhong)面(yong)的框架,基本你要的功能都有,文档很细致,上手比较容易,开发效率比较高。自带 auth、session、orm、admin 等功能,尤其是 admin,如果要求不是太高,用自带的后台管理系统就能省下很多开发工作。web server:nginx相对 apache 较轻,简洁。用来部署 django 也比较方便,可参考 Setting up Django and your web server with uWSGI and nginx数据库:mysql这个不限定,看业务需求和开发者喜好。当然如果用了 django,自然最好选一个 orm 支持比较好的。RESTful API:Tastypie基于 Django 的 RESTful API。Django 本身作为一个 web 框架,返回的结果默认是渲染好的 html 文本。借助 Tastypie,可以比较方便的制作 json 数据格式的接口,将前后端解耦合。这样不管是网页、iOS 还是 Android,都可以用同样的接口。再针对问题补充一下:

1、如果使用python语言,需要学习哪些知识?python 语言本身,使用的框架,web 开发的通用知识,比如 HTTP 请求的处理流程、RESTful、OAuth 等。

2、选择什么样的python框架开发,这个框架的优势?见上文。

3、如何部署服务器?本地服务器调试,以及公网服务器部署?Django 自带本地调试服务,开发的时候用局域网地址调试即可。公网部署见上文。

4、如果使用python框架开发移动后台服务,在开发源码内使用哪种框架?mvc还是其它的,比如我返回json数据,每次json对象最外层有一些相同的东西,该如何处理?Tastypie 可以处理掉生成 json 数据时的很多体力活。

5、python的后台服务最大能支持多大的pv量会严重影响用户体验性能?这个没法给确切答案,具体情况会受机器硬件条件(CPU、内存、I/O)、网络带宽、代码质量、架构设计,甚至配置参数的影响。目前有较大型网站使用 python,并正常运作(参见 有哪些大型公司在使用 Python?有哪些知名项目是主要由 Python 写成的? - Crossin 的回答),所以 python 本身不是问题。实践时,做好压力测试和上线后的性能监控,找出瓶颈不断优化是王道。

6、如何兼顾 网页前端以及移动端 开发的后台?通过 API,后台无需知道是什么平台在使用它。

7、有没用相关的案例,即用python开发的移动后台?有没有该问题的开源项目?通常框架会自带测试案例。真实案例开源的暂时不知道。如果哪天我把之前写的开源了,再回来修改答案。

nginx返回200没数据

1、nigix是否在正常运行,需要用linux命令查看nginx运行情况。执行命令:ps -A | grep nginx。

如果返回结果的话,说明有nginx在运行,服务已经启动。如果不怕nginx关闭的话。也可以执行:service nginx restart。

把nginx服务重启,在重启时,也可以看到具体有没有什么地方出错。

2、看端口netstat -ntlp;

看进程ps -ef|grep nginx;

看日志是否更新tail -f access.log。

3、直接查看进程id:ps -C nginx -o pid。

这种直接返回pid的方式比较适合跟其他程序结合使用,比如在shell/python脚本中执行这个命令拿到pid,让后根据pid来判断Nginx是否启动。 推荐使用这种方式。

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/98793625.html