nginx报错sorry(nginx报错499)
nginx报错499
ngx_upload模块是nginx中一个文件上传模式了,下面我们来看看nginx安装文件上传ngx_upload模块步骤,希望例子对各位有帮助.
安装nginx,并加入nginx upload module和nginx cache purge module:
mkdir ~/download
cd ~/download
wget http://www.grid.net.ru/nginx/download/nginx_upload_module-2.0.12.tar.gz
tar zxf nginx_upload_module-2.0.12.tar.gz
git clone https://github.com/FRiCKLE/ngx_cache_purge.git
yum groupinstall "Development Tools"
yum install pcre-devel zlib-devel openssl-devel
wget http://nginx.org/download/nginx-1.2.3.tar.gz
tar zxf nginx-1.2.3.tar.gz
cd nginx-1.2.3
./configure --prefix=/usr/local/nginx --with-pcre --with-http_ssl_module --add-module=../nginx_upload_module-2.0.12 --add-module=../ngx_cache_purge
make && make install
尝试启动:
/usr/local/nginx/sbin/nginx
ps aux | grep nginx
假如我的网站是放在 /home/mysite/www 下的,而nginx配置文件就放在 /home/mysite/etc 下:
省略了很多内容的配置文件,mysite.conf:
server {
listen 80;
server_name 192.168.1.123;
client_max_body_size 20M;
location /upload {
include /home/mysite/etc/nginx/ngx_upload.conf;
}
....其他的配置....
location @after_upload {
proxy_pass http://www_backend;
}
}
将nginx_upload.conf独立开来,是因为其他网站也可以包含此上传配置文件:
nginx_upload.conf:
upload_pass @after_upload;
upload_pass_args on;
upload_cleanup 400 404 499 500-505;
upload_store /home/mysite/www/uploads/tmp;
upload_store_access user:r;
upload_limit_rate 128k;
upload_set_form_field "${upload_field_name}_name" $upload_file_name;
upload_set_form_field "${upload_field_name}_content_type" $upload_content_type;
upload_set_form_field "${upload_field_name}_path" $upload_tmp_path;
upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5;
upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size;
upload_pass_form_field "^.*$";
而最后那个参数:upload_pass_form_field,代表可以将表单的所有参数保持原样传递到后端,需要区分文件保存类型时很有用。
nginx报错405
状态码 405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求。需要注意的是,GET 与 HEAD 两个方法不得被禁止,当然也不得返回状态码 405。
解决:解决方法有三种
一. 重定向405错误码到200:在nginx server{}里面添加以下内容,root为站点的根目录
二. 转换静态文件接收的POST请求到GET方法去
三. 修改nginx源码,源码文件位于/nginx源码目录/src/http/modules/ngx_http_static_module.c,找到如下代码:
扩展资料:
405 错误经常和 POST 方法同时出现。 您可能在您的网站上尝试引入某种输入表格,但并非所有的互联网服务供应商 (ISPs) 都 允许处理该表格所需的 POST 方法。
所有 405 错误都可以追综到 Web 服务器设置和控制访问网站内容的安全管理,因此您的 ISP 应该很容易地予以解释。
参考资料:
nginx报错500
是自己的网站域名无法解析 chrome报错:Get net::ERR_NAME_NOT_RESOLVED nginx配置。
输入以下内容:
server {
listen 80;
server_name www.xxx.cn;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 443;
server_name www.xxx.cn;
ssl on;
ssl_certificate /data/www/blog/ssl/1_www.xxx.cn_bundle.crt;
ssl_certificate_key /data/www/blog/ssl/2_www.xxx.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;location / {
root /data/www/blog/;
try_files $uri $uri/ /index.html;
}
}
nginx报错502
我常在Nginx服务器上发现502错误,很多情况下并非Nginx本身的问题。就以Nginx+PHP+MySQL这种架构说明。Nginx本身设置等cgi接口返回的数据延时太短,要延长这个时间。
如同前面说的,很多情况下并非Nginx本身的问题,这样操作后常常并不能缓解问题。
此时,就要考虑对应cgi接口的配置,比如 php-fpm.conf 的配置,脚本执行时间的超时情况限制。
这可以通过跟踪php-fpm的 slow log 来排查,对相关代码优化,减少延时。
另外很大的问题在MySQL数据库这一块,如果数据库执行命令超时也会大延长php脚本的执行时间,导致 Nginx 等待超时。
可以my.cnf的 slow log进行确认效能低下的sql语句是哪些,进行优化配置。
通过优化 php-fpm 及 MySQL的配置都大大减少Nginx的等待超时的情况。以上是LNMP的架构为例进行说明。
NGINX报错504 Gateway Time-out
打开网站有时出现502 Bad Gateway可以这样解决:
1、502 Bad Gateway错误的原因是网站到客户端的链路网关路由异常。
2、要解决502 Bad Gateway错误服务端服务器问题,要先找到nginx配置的路径。然后找到nginx所在的error日志文件来查看具体原因。
3、如果是客户端浏览器配置的问题,以360浏览器为例,出现502 Bad Gateway可能是设置了代 代理导致的。
4、找到360浏览器右上角的设置,看看代理配置是不是勾选了。
5、取消浏览器代理之后,刷新一下就可以访问了。
6、如果是edge浏览器配置的问题,先找到edge浏览器,然后找到右上角选项,点击更多连接设置。
7、然后点击代理连接设置,打开IE的服务器代理就可以了。
8、如果是IE浏览器的配置问题,打开IE浏览器,找到工具栏中的internet 选项,点击internet选项进入配置页面。
9、然后点击连接,找到局域网连接设置,然后关闭代理设置。这就是打开网站有时出现502 Bad Gateway的解决步骤。
nginx报错499是什么意思
499含义:客户端发起请求后,一段时间内没有收到代理服务器的应答,导致连接失败
499状态码只要不是大规模出现,都是正常的状态码,是nginx记录客户端在和服务端建连之后,没开始传输数据就断会记录499,如果是客户端【主动】断开的,服务端就记录499,未必跟后端服务有关
出现种情况有两种可能:
1.代理服务器认为客户端发起的请求过于危险,所以主动给断了
2.代理服务器实在么得办法连接到其他服务,导致timeout
解决方法:
1.修改nginx配置(改为开启)
Syntax: proxy_ignore_client_abort on | off; #代理服务器是否主动关闭连接 Default: proxy_ignore_client_abort off; Context: http, server, location Determines whether the connection with a proxied server should be closed when a client closes the connection without waiting for a response.
2.查看下代理服务器和真正服务器的端口连接,看下是否有端口不通,开放端口。
nginx报错403
一、由于启动用户和nginx工作用户不一致所致
1.1查看nginx的启动用户,发现是nobody,而为是用root启动的
命令:ps aux | grep "nginx: worker process" | awk'{print $1}'
1.2将nginx.config的user改为和启动用户一致,
命令:vi conf/nginx.conf
二、缺少index.html或者index.php文件,就是配置文件中index index.html index.htm这行中的指定的文件。
1. server {
2. listen 80;
3. server_name localhost;
4. index index.php index.html;
5. root /data/www/;
6. }
如果在/data/www/下面没有index.php,index.html的时候,直接文件,会报403 forbidden。
三、权限问题,如果nginx没有web目录的操作权限,也会出现403错误。
解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决
1. chmod -R 777 /data
2. chmod -R 777 /data/www/
四、SELinux设置为开启状态(enabled)的原因。
4.1、查看当前selinux的状态。
1. /usr/sbin/sestatus
4.2、将SELINUX=enforcing 修改为 SELINUX=disabled 状态。
1. vi /etc/selinux/config
2.
3. #SELINUX=enforcing
4. SELINUX=disabled
4.3、重启生效。reboot。
1. reboot
重启php以及nginx
killall php-fpm && php-fpm &
nginx -s reload
nginx报错503分析与解决
一、访问出现503 service unavailable,但刷新一下又能正常访问
出现这种情况是由于网站超过了iis限制造成的,比如2003的操作系统在提示IIS过多时并非像2000系统提示“链接人数过多”,而是提示"Service Unavailable",出现这种情况是由于网站超过了系统资源限制造成的,主要是程序占用资源太多。
解决方法:增加IIS连接数就可以解决。
二、不限制IIS连接数,但还会提示503 service unavailable
这种情况一般都是使用ACCESS数据库的网站,通过分析就可以知道是ACCESS引擎当了。通过排查会发现一些文件引起ACCESS引擎“灾难性故障”及“未将对象引用设置到对象的实例”的错误。
解决方法:通过服务器医生的文件医生修复就可以恢复正常。
三、浏览一个 Windows SharePoint Services Web 站点时,提示:Service Unavailable
出现该问题的的原因是Microsoft Internet 信息服务 (IIS) 6.0 中没有正确地配置用于虚拟服务器的应用程序池。
解决方法:
1、首先我们需要验证虚拟服务器是否正确配置了应用程序池,默认的应用程序池是 MSSharePointPortalAppPool。
a).单击“开始”选择“管理工具”,然后单击“Internet 信息服务 (IIS) 管理器”。
b).打开“ServerName”,展开“Web 站点”,右键单击虚拟服务器,然后单击“属性”。
c).单击“主目录”选项卡,为虚拟服务器配置的应用程序池列在“应用程序池”框中。
d).单击“确定”即可。
2、验证应用程序池帐户是服务器上的 IIS_WPG 组和 STS_WPG 组的成员。
3、重新启动 IIS 以回收应用程序池。
四、网站第一次出现“service unavailable”问题,直接重启IIS就行了。步骤如下:
1、使用快捷键Windows+R打开运行,输入iisreset就可以实现IIS重启。
2、在开始菜单中搜索IIS,然后打开IIS,然后选择重新启动IIS也可以。
五、网站经常出现service unavailable503,或者重启iis后仍然会挂掉的方法
1、套用CDN
首先你要排除下服务器或vps资源是否够用,看下你的服务器各项资源是否都在正常值(cpu,带宽,内存等),现在的vps或者服务器都有后台面板统计的,cpu你长期百分之百肯定有问题,当你的硬件资源没有空闲时会导致iis工作不正常的,会报一些乱七八糟的错误,其实比较简单的解决方法就是网站访问加cdn,套上cdn后,网站需要的服务器资源都走cdn了,iis负载也下来了,自然不会报错。
2、关掉一些不必要的软件功能
比如很多站长用安全狗防护网站,软件确实不错,但会造成卡顿。另外你的安全级别默认或者很高的话,拦截的会非常多,有时一秒钟能拦击几个到十几个,这样也消耗了你的服务器。
3、网站自身程序问题
网站运行中如果交互性不重要,就把网站静态化,动态在iis下跑比较费力的,尤其是php
4、切换系统服务
网站如果还在用iis系统或在win上搭建的apache/nginx,建议换成linux系统,其实linux也没那么难,推荐amh或宝塔一键安装php环境,然后用winsp(类似ftp的可视化管理工具)管理文件和权限就可以了。
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;
本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.