5

Nginx - 最小配置!你值得拥有

 3 years ago
source link: https://segmentfault.com/a/1190000040656820
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

安全服务器是只允许所需数量的服务器。理想情况下,我们将通过单独启用其他功能来基于最小系统构建服务器。进行最少的配置也有助于调试。如果该错误在最小系统中不可用,则分别添加功能,然后继续搜索错误。

这是运行nginx所需的最低配置:

# /etc/nginx/nginx.confevents {}        
# event context have to be defined to consider config valid
http {}
 server {
    listen 80;
    server_name  javatpoint.co  www.javatpoint.co  *.javatpoint.co;

    return 200 "Hello";
  }

Root,Location和try_files指令

Root 指令

root指令用于设置请求的根目录,从而允许nginx将传入的请求映射到文件系统上。

server {
  listen 80;
  server_name javatpoint.co;
  root /var/www/javatpoint.co;
}

它允许nginx根据请求返回服务器内容:

javatpoint.co:80/index.html     # returns /var/www/learnfk.com/index.html
javatpoint.co:80/foo/index.html # returns /var/www/learnfk.com/foo/index.html
Location指令

location指令用于根据请求的URI(统一资源标识符)来设置配置。

location [modifier] path
location /foo {  # ...}

如果未指定修饰符,则将路径视为前缀,之后可以跟随任何内容。上面的示例将匹配:

/foo
/fooo
/foo123
/foo/bar/index.html...

我们还可以在给定的上下文中使用多个location指令:

server {
  listen 80;
  server_name javatpoint.co;
  root /var/www/javatpoint.co;

  location/{
    return 200 "root";
  }

  location /foo {
    return 200 "foo";
  }
}
javatpoint.co:80  /      # => "root"
javatpoint.co:80   /foo    # => "foo"
javatpoint.co:80   /foo123 # => "foo"
javatpoint.co:80   /bar    # => "root"

Nginx还提供了一些可以与 location 指令结合使用的修饰符。

修饰符已分配优先级:

=           - Exact match
^~          - Preferential match
~ && ~*     - Regex match
no modifier - Prefix match

首先,nginx将检查所有精确匹配项。如果不存在,它将寻找优先选项。如果此匹配也失败,则将按其出现顺序测试正则表达式匹配。如果其他所有操作均失败,则将使用最后一个前缀匹配。

location /match {
  return 200 'Prefix match: will match everything that starting with /match';
}

location ~* /match[0-9] {
  return 200 'Case insensitive regex match';
}

location ~ /MATCH[0-9] {
  return 200 'Case sensitive regex match';
}

location ^~ /match0 {
  return 200 'Preferential match';
}

location = /match {
  return 200 'Exact match';
}
/match     # => 'Exact match'
/match0    # => 'Preferential match'
/match1    # => 'Case insensitive regex match'
/MATCH1    # => 'Case sensitive regex match'
/match-abc # => 'Prefix match: matches everything that starting with /match'
try\_files指令

该指令尝试不同的路径,并返回找到的任何路径。

try_files $uri index.html =404;

因此,/foo.html将尝试按以下顺序返回文件:

$uri(/foo.html);

index.html

如果未找到:404

如果我们在服务器上下文中定义try\_files,然后定义查找所有请求的位置,则不会执行try\_files。发生这种情况是因为服务器上下文中的try\_files定义了其伪位置,该伪位置是可能的最低特定位置。因此,定义location/ 会比我们的伪位置更具体。

server {  
try_files $uri /index.html =404;  
location/{ 
 }
}

因此,我们应该避免在服务器上下文中使用try_files:

server {  
location/{   
 try_files $uri /index.html =404; 
 }
}

更多关于Nginx的配置请参阅旧文:Nginx 常用配置汇总!从入门到干活足矣

如里需要学习更多关于nginx的知识体系,也可以点击下方图片进入Nginx知识体系专栏学习。

基础的服务安装、配置文件介绍、虚拟主机配置实践、Nginx优化配置详解、LNMP架构Nginx反向代理负载均衡配置、Nginx+Tomcat多实例及负载均衡配置、高可用、Nginx 版本的平滑升级与回滚、Nginx限流配置、Nginx日志生产实战、Nginx配置文件在线生成工具介绍等

作者:GeekGay 链接:imooc.com/article/319107


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK