安全服务器只允许所需数量的服务器。理想情况下,我们将通过单独启用其他功能从最小系统构建服务器。进行最少的配置也有助于调试。如果最小系统没有bug,则单独添加功能,继续查找bug。这是运行nginx所需的最低配置:#/etc/nginx/nginx.confevents{}#必须定义事件上下文以考虑配置validhttp{server{listen80;server_namejavatpoint.cowww.javatpoint.co*.javatpoint.co;return200"Hello";}Root、Location和try_files指令Root指令用于设置请求的根目录,允许nginx将传入的请求映射到文件系统。服务器{听80;服务器名称javatpoint.co;root/var/www/javatpoint.co;}允许nginx根据请求返回服务器内容:javatpoint.co:80/index.html#returns/var/www/learnfk.com/index.htmljavatpoint.co:80/foo/index.html#returns/var/www/learnfk.com/foo/index.htmlLocation指令location指令用于根据请求的URI(统一资源标识符)设置配置。语法是:location[modifier]path示例:location/foo{#...}如果没有指定修饰符,路径将被视为前缀,后面可以跟任何内容。上面的示例将匹配:/foo/fooo/foo123/foo/bar/index.html...我们还可以在给定上下文中使用多个位置指令:server{listen80;服务器名称javatpoint.co;根/var/www/javatpoint.co;位置/{返回200“根”;}位置/foo{返回200“foo”;}}javatpoint.co:80/#=>"root"javatpoint.co:80/foo#=>"foo"javatpoint.co:80/foo123#=>"foo"javatpoint.co:80/bar#=>“root”Nginx还提供了一些可以与位置指令结合使用的修饰符。修饰符分配优先级:=-精确匹配^~-优先匹配~&&~*-正则表达式匹配无修饰符-前缀匹配首先,nginx将检查所有精确匹配。如果不存在,它将寻找首选选项。如果此匹配也失败,则正则表达式匹配将按照它们出现的顺序进行测试。如果所有其他方法均失败,则将使用最后一个前缀匹配。location/match{return200'前缀匹配:将匹配所有以/match开头的内容';}location~*/match[0-9]{return200'不区分大小写的正则表达式匹配';}location~/MATCH[0-9]{return200'区分大小写的正则表达式匹配';}location^~/match0{return200'优先匹配';}location=/match{return200'精确匹配';}/match#=>'精确匹配'/match0#=>'优先匹配'/match1#=>'不区分大小写的正则表达式匹配'/MATCH1#=>'区分大小写的正则表达式匹配'/match-abc#=>'前缀匹配:匹配以/match开头的所有内容'try_files指令该指令尝试不同的路径并返回找到的任何路径。try_files$uriindex.html=404;所以/foo.html将尝试按以下顺序返回文件:$uri(/foo.html);index.htmlifnotfound:404如果我们在服务器上下文中定义了try_files,那么Defineswheretolookforallrequests,try_files将不会被执行。发生这种情况是因为服务器上下文中的try_files定义了它的伪位置,这是可能的最低特定位置。因此,定义location/将比我们的伪位置更具体。服务器{try_files$uri/index.html=404;location/{}}因此,我们应该避免在服务器上下文中使用try_files:server{location/{try_files$uri/index.html=404;}}来源:https://www.imooc.com/article...
