Ich habe zuvor gesehen, dass MOOC Nginx verwendet, um statische Ressourcen bereitzustellen, also wollte ich versuchen, ngjinx zum Bereitstellen meiner Ressourcen zu verwenden. Jetzt brauchen wir folgende Fragen:
/course/list
,我只能使用list.html
,我想让每个连接都不会出现.html
nach der URL? Schreibt dies die URL neu oder ist sie mit dem Standort konfiguriert?
übereinzustimmen, aber es stimmte nicht überein, sodass es nicht an den Proxyserver weitergeleitet wurde, aber die statische Seite wurde normal angezeigt. /test/test.html
um die richtigen Daten zu erhalten. /products/getproducts/2
,确实转发到了:localhost:8086/products/getproducts/2
第一个问题:
Nginx用try_files指令可以很方便地把请求数据导入到框架的前端控制器比如index.php里:
前端控制器index.php可以用$_SERVER['REQUEST_URI']获取/course/list这串URL参数,如果后面还有参数,比如/course/list?page=2&tag=mysql,这时可以用$_SERVER['QUERY_STRING']获取查询串page=2&tag=mysql,然后自行urldecode后用explode以&分割串获得类似$_GET的参数数组,也可以直接使用$_GET拿到参数数组.
总而言之,就是由程序入口index.php及其里面的程序决定是加载HTML静态文件返回,还是连接数据库可进行处理.
如果你想让Nginx判断是否命中HTML缓存,可以这样配置:
比如访问/post/1024,Nginx会按try_files给定的顺序尝试访问以下文件:
/post/1024 ($uri 表示文件)
/post/1024/ ($uri/ 表示目录)
/html/post/1024.html (/html$uri.html 表示你的HTML静态缓存)
如果都不存在,则连同参数把URI信息交给index.php处理 (最后的/index.php?$args表达的就是这个意思).
问题 1,可以使用rewrite方式,例如:
需要注意的是只重写所有course 开头的请求
xxx.com/course/list -> xxx.com/course/list.html
xxx.com/course/list/sub -> xxx.com/course/list/sub.html
问题 2
感觉应该还有其他的location 配置,如果方便把整个nginx配置贴出来