① nginx怎么让thinkphp路由模式设置
首先THINKPHP配置文件中设置
//url访问模式为rewrite模式
'URL_MODEL'=>'2',
然后再在nginx.conf文件中,找到这一条语句 #access_log logs/host.access.log main;
找到location /{}这个语句段落
location / {
index index.html index.htm index.php;
#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
if (!-e $request_filename)
{
#地址作为将参数rewrite到index.php上。
#rewrite ^/(.*)$ /index.php/$1;
#若是子目录则使用下面这句,将subdir改成目录名称即可。
rewrite ^/company/(.*)$ /company/index.php/$1;
}
}
然后根据自己的路径重启nginx服务器
# path/nginx -s reload你看过后很简单吧以后不会可以向我一样经常到后盾人平台找找相关教材看看就会了,希望能帮到你,给个采纳吧谢谢\(^▽^)/!
② nginx反向代理带路径访问问题
这个主要是要做一个反向代理,具体配置如下:
#upstream的配置
upstreamserver_A{
server192.168.0.55:8080;
}
upstreamserver_B{
192.168.0.206:8080;
}
#主机192.168.0.219的配置
server{
listen80default_server;
server_nameXX.com;
#server中的其它配置
#...
#如下值反向代理配置
if($request_uri~*"^/+$"){
proxy_passhttp://server_A;
break;
}
#其他的反向代理配置,通过uri的正则进行匹配
#if($request_uri~*"regex"){
#proxy_passhttp://server_B;
#break;
#}
}
#对应的server_A,server_B的机器的配置需要增加相应的路由规则。
#在server_A机器上增加路由规则。
location/{
rewrite"^/+bingo-szwf-sso"/path/of/phpbreak;
#...其他配置。
}
③ 连接路由器后不能用公网ip访问nginx
从外网访问内部网,需要NAT 网络端口映射 一般外网80端口是映到内网某机的80端口。
或者做整机的映射,全部端口映射到内部
还可以用DMZ方式,军事缓冲区
调试的时候先用IP,OK了再调试动态域名。
④ nginx 路由配置
nginx中location对url匹配;
语法:location [=| | *|^~] /uri/ { … }
当匹配中符合条件的location,则执行内部指令;如果使用正则表达式,必须使用 *表明不区分大小写或者 区分大小写匹配;例如:location ~* .(gif|jpg|jpeg)$ ;当配皮成功后,将停止往下匹配;如果没有找到,则使用常规自字符串处理结果;
如果不是用正则表达式;可使用=严格匹配;
如果使用^~前缀用于一个常规字符串;表示如果路径匹配,则不测试正则表达式;
总结:指令按下列顺序被接受
1:=前缀的指令严格匹配这个查询;如果找到停止往下匹配
2:挣下的常规字符串,长的在前,如果这个匹配使用^~前缀,匹配停止;
3:正则表达式,按配置文件的顺序;
4:如果第三步产生匹配。则使用这个结果;停止匹配;否则使用第二部的匹配结果;
四个案例:
八个location案例
当匹配成功后location中可以使用rewrite进行路由重写;
首先需要了解nginx rewrite中可以使用到的全局变量;
$args:请求中get的参数,例如a=1&b=2;
$body_remote_add:二进制客户地址
$body_byte_sent:相应时发送出去的body字节数数量,即使链接中断这个数据也是精确的;
$content_length:请求头中的Content_length字段
$content_type:请求中的Content_type字段
$document_root:当前请求在root指令中的位置;服务器中绝对路径
$document_url:与uri相同
$host:请求主机头字段,否则为服务器名称;
$hostname:保存了当前请求中不包含指令的uri,例如: http://www.aaa.com/index.php?a=1 中的/index.php;
$host:请求的服务器名称;
$http_user_agent:客户端浏览器的详细信息,如果使用 chrome 和Firefox 则访问结果是
location ~* .(gif|jpg|png|bmp) invalid_referer) {
return 403;
#rewrite ^/ http://www.aaa.com/1.jpg ;
}
}以上所有来至aaa.com和域名中包含google和的站点都可以访问到当前站点的图片,如果来源域名不在这个列表中,那么$invalid_referer等于1,在if语句中返回一个403给用户,这样用户便会看到一个403的页面,如果使用下面的rewrite,那么盗链的图片都会显示403.jpg。如果用户直接在浏览器输入你的图片地址,那么图片显示正常,因为它符合none这个规则.
location ~* .(gif|jpg|png|swf|flv) invalid_referer) {
return 404;
}
}
none:在浏览器输入网站域名直接访问的请求,需要允许访问的
blocked:有referer首部,但是referer首部被清除了,一般是防火墙改过的请求
server_name:带服务器名称的,一般是本机或其他服务器的请求,a.com和*.a.com是本公司的域名,要允许访问于是要先允许本机的访问,再禁止其他服务器的访问
location /public/admin/images/y.jpg {
#valid_referers none blocked *.aaa.com server_names *.aaa.com ;
#valid_referers none blocked www.sss.com ; #设置只有该域> 名可以访问
valid_referers none blocked 111.111.111.11; #设置只有该域名可以访> 问
if ( request_uri?;
return 403;
rewrite ^/ http://www.aaa.com/1.jpg ;
}
}
. : 匹配除换行符以外的任意字符
? : 重复0次或1次
if ( /msie/$1 break;
}
if ( )") { # 如果cookie匹配正则,就设置变量 id id等于正则第一个括号内匹配的部分
}
if ($request_method = POST) { #如果提交方法为POST,则返回状态405(Method not allowed)。return不能返回301,302
return 405;
}
if ( slow可以通过 set 指令设置
limit_rate 10k;
}
if (!-f $request_filename){ #如果请求的文件名不存在,则反向代理到localhost 。这里的break也是停止rewrite检查
break;
proxy_pass http://127.0.0.1;
}
if ($args ~ post=140){ #如果query string中包含"post=140",永久重定向到example.com
rewrite ^ http://example.com/ permanent;
}
http {
# 定义image日志格式
log_format imagelog '[ image_file ' ' body_bytes_sent ' ' $status;
# 开启重写日志
rewrite_log on;
}
⑤ nginx无法启动,网站访问不了,有什么办法
第一个办法是更改系统的默认配置。打开注册表regedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP,在右边找到Start这一项,将其改为0,重启。
第二种做法就是更改Nginx的默认端口号,比如我们改成8088。然后再启动Nginx,打开浏览器输入localhost:8088就可以看到欢迎页面了。
⑥ 虚拟机linux配置nginx 为什么win7通过Ip访问不到
第一步,你应该先检查网络,
win机ping linux机,通了进行下一步。
第二步,检查端口,
netstat -antl | grep 你开启的服务端口,
比如你开了http,那就是80端口或者你自定义的端口,我就不多说了。
第三步,检查防火墙,
service iptables stop,
可以直接先关掉防火墙看是不是能访问了,如果可以,说明是防火墙屏蔽掉了,可以设备防火墙放行对应端口。
⑦ 系统是用安全证书nginx访问的,别人现在想用ws访问系统接口,访问不到怎么办
一、网络设置的问题这种原因比较多出现在需要手动指定IP、网关、DNS服务器联网方式下,及使用代理服务器上网的。仔细检查计算机的网络设置。二、DNS服务器的问题当IE无法浏览网页时,可先尝试用IP地址来访问,如果可以访问,那么应该是DNS的问题,造成DNS的问题可能是连网时获取DNS出错或DNS服务器本身问题,这时你可以手动指定DNS服务(地址可以是你当地ISP提供的DNS服务器地址,也可以用其它地方可正常使用DNS服务器地址。)在网络的属性里进行,(控制面板—网络和拔号连接—本地连接—右键属性—TCP/IP协议—属性—使用下面的DNS服务器地址)。不同的ISP有不同的DNS地址。有时候则是路由器或网卡的问题,无法与ISP的DNS服务连接,这种情况的话,可把路由器关一会再开,或者重新设置路由器。还有一种可能,是本地DNS缓存出现了问题。为了提高网站访问速度,系统会自动将已经访问过并获取IP地址的网站存入本地的DNS缓存里,一旦再对这个网站进行访问,则不再通过DNS服务器而直接从本地DNS缓存取出该网站的IP地址进行访问。所以,如果本地DNS缓存出现了问题,会导致网站无法访问。可以在“运行”中执行ipconfig /flushdns来重建本地DNS缓存。三、IE浏览器本身的问题当IE浏览器本身出现故障时,自然会影响到浏览了;或者IE被恶意修改破坏也会导致无法浏览网页。这时可以尝试用“黄山IE修复专家”来修复(建议到安全模式下修复),或者重新IE(如重装IE遇到无法重新的问题,可参考:附一解决无法重装IE)四、网络防火墙的问题如果网络防火墙设置不当,如安全等级过高、不小心把IE放进了阻止访问列表、错误的防火墙策略等,可尝试检查策略、降低防火墙安全等级或直接关掉试试是否恢复正常。五、网络协议和网卡驱动的问题IE无法浏览,有可能是网络协议(特别是TCP/IP协议)或网卡驱动损坏导致,可尝试重新网卡驱动和网络协议。六、HOSTS文件的问题HOSTS文件被修改,也会导致浏览的不正常,解决方法当然是清空HOSTS文件里的内容。七、系统文件的问题当与IE有关的系统文件被更换或损坏时,会影响到IE正常的使用,这时可使用SFC命令修复一下,WIN98系统可在“运行”中执行SFC,然后执行扫描;WIN2000/XP/2003则在“运行”中执行sfc /scannow尝试修复。其中当只有IE无法浏览网页,而QQ可以上时,则往往由于winsock.dll、wsock32.dll或wsock.vxd(VXD只在WIN9X系统下存在)等文件损坏或丢失造成,Winsock是构成TCP/IP协议的重要组成部分,一般要重装TCP/IP协议。但xp开始集成TCP/IP协议,所以不能像98那样简单卸载后重装,可以使用 netsh 命令重置 TCP/IP协议,使其恢复到初次安装操作系统时的状态。具体操作如下:点击“开始 运行”,在运行对话框中输入“CMD”命令,弹出命令提示符窗口,接着输入“netsh int ip reset c:\resetlog.txt”命令后会回车即可,其中“resetlog.txt”文件是用来记录命令执行结果的日志文件,该参数选项必须指定,这里指定的日志文件的完整路径是“c:\resetlog.txt”。执行此命令后的结果与删除并重新安装 TCP/IP 协议的效果相同。小提示:netsh命令是一个基于命令行的脚本编写工具,你可以使用此命令配置和监视Windows 系统,此外它还提供了交互式网络外壳程序接口,netsh命令的使用格式请参看帮助文件(在令提示符窗口中输入“netsh/?”即可)。第二个解决方法是修复以上文件,WIN9X使用SFC重新提取以上文件,WIN2000/XP/2003使用sfc /scannow命令修复文件,当用sfc /scannow无法修复时,可试试网上发布的专门针对这个问题的修复工具WinSockFix,可以在网上搜索下载。八、杀毒软件的实时监控问题这倒不是经常见,但有时的确跟实时监控有关,因为现在杀毒软件的实时监控都添加了对网页内容的监控。举一个实例:KV2005就会在个别的机子上会导致 IE无法浏览网页(不少朋友遇到过),其具体表现是只要打开网页监控,一开机上网大约20来分钟后,IE就会无法浏览网页了,这时如果把KV2005的网页监控关掉,就一切恢复正常;经过彻底地重装KV2005也无法解决。虽然并不是安装KV2005的每台机子都会出现这种问题,毕竟每台机子的系统有差异,安装的程序也不一样。但如果出现IE无法浏览网页时,也要注意检查一下杀毒软件。九、Application Management服务的问题出现只能上QQ不能开网页的情况,重新启动后就好了。不过就算重新启动,开7到8个网页后又不能开网页了,只能上QQ。有时电信往往会让你禁用Application Management服务,就能解决了。具体原因不明。十、感染了病毒所致这种情况往往表现在打开IE时,在IE界面的左下框里提示:正在打开网页,但老半天没响应。在任务管理器里查看进程,(进入方法,把鼠标放在任务栏上,按右键—任务管理器—进程)看看CPU的占用率如何,如果是100%,可以肯定,是感染了病毒,这时你想运行其他程序简直就是受罪。这就要查查是哪个进程贪婪地占用了CPU资源.找到后,最好把名称记录下来,然后点击结束,如果不能结束,则要启动到安全模式下把该东东删除,还要进入注册表里,(方法:开始— 运行,输入regedit)在注册表对话框里,点编辑—查找,输入那个程序名,找到后,点鼠标右键删除,然后再进行几次的搜索,往往能彻底删除干净。有很多的病毒,杀毒软件无能为力时,唯一的方法就是手动删除。十一、无法打开二级链接还有一种现象也需特别留意:就是能打开网站的首页,但不能打开二级链接,如果是这样,处理的方法是重新注册如下的DLL文件:在开始—运行里输入:regsvr32 Shdocvw.dllregsvr32 Shell32.dll(注意这个命令,先不用输)regsvr32 Oleaut32.dllregsvr32 Actxprxy.dllregsvr32 Mshtml.dllregsvr32 Urlmon.dllregsvr32 Msjava.dllregsvr32 Browseui.dll注意:每输入一条,按回车。第二个命令可以先不用输,输完这些命令后重新启动windows,如果发现无效,再重新输入一遍,这次输入第二个命令
⑧ nginx访问不了根目录下的文件怎么解决
看看你的目录有没有权限
⑨ centos 安装完Nginx后,为什么访问不了
【解决方法】
首先看看是不是防火墙开启了;
本地试下端口是否可访问telnet 192.168.4.155 80;
CentOS 7默认使用的是firewall作为防火墙,这里改为iptables防火墙。
firewall:
systemctl start firewalld.service#启动firewall
systemctl stop firewalld.service#停止firewall
systemctl disable firewalld.service#禁止firewall开机启动
在centos下尝试使用$curl http://127.0.0.1命令访问nginx。确定是否可以访问。
⑩ PHPCMS换到nginx环境下后配置的url路由不生效,apache环境下访问正常。
服务器方面,如果你自己设定了url伪静态规则,请在nginx中重新配置你的伪静态规则。因为两个服务器的配置方法不一样,在apache下可用在nginx下就不一定可用。
另外,phpcms系统方面,请确保在后头修改url规则后已在后台-内容-更新url地址栏目下更新了所有页面的url规则,否则也可能还是使用原来的url。