设为首页 收藏本站
查看: 920|回复: 0

[经验分享] Nginx新手指南

[复制链接]

尚未签到

发表于 2018-11-16 10:02:16 | 显示全部楼层 |阅读模式
  1.1 简介
  这个指导对nginx的基础功能做了简单的说名。现在nginx也应该已经在读者机器上安装了,如果还没有,那么看看安装页面。这个指导将会讲到如何启动,停止nginx和重载它的配置文件,解释了配置文件的结构,如何设置nginx服务静态内容,如何配置nginx作为代理服务器,如何连接一个FastCGI应用。
  nginx有一个master主进程和几个worker进程。master进程的目的是为了读取和评估配置文件,和维护worker进程。Woker进程是实际处理请求的。nginx使用了基于事件的模型和依赖OS(OS-dependent)的机制来高效的分发请求到woker 进程中,worker进程的数量可以在配置文件中定义,可以使用固定的数量或自动的调整为可用的CPU核数(see worker_processes)。
  nginx和它的模块工作方式取决于配置文件。默认这个配置文件名称为nginx.conf,位于/usr/local/nginx/conf或/usr/local/etc/nginx目录下面。
  1.2 启动,停止,和重载配置文件
  一般使用ngixn的可执行文件启动nginx,nginx的可执行文件有如下用法。
  nginx -s signal
  信号可以是下面中的其中之一
  ·   stop — fast shutdown
  ·   quit — graceful shutdown

  ·  >  ·   reopen — reopening the log files
  在配置文件中的改变不会立即生效,除非你重载配置文件或者重启nginx,想要重载配置,执行。

  nginx -s>  一旦主进程收到了重载配置文件的信号,它首先检查语法是否有错,然后试着应用配置文件。如果成功了,主进程启动新的worker进程同时,向老的worker进程发消息请求他们关闭。否则的话,主进程仍然回滚到改变之前继续工作在旧的配置文件之下。老的worker进程,在收到关闭命令之后,停止接受新的请求,但是继续处理当前的请求知道所有的请求都处理完毕。然后老的worker进程退出。
  1.3 配置文件的结构
  nginx由模块组成,而模块通过在配置文件中指定指令来控制。指令分为简单的指令和块指令,简单额指令由名字和参数通过空格分开,以分号”;”结尾。块指令作为简单指令也有同样的结果,但是不再使用分号结尾,而是花括号{}。块指令包含其它指令在花括号内部,它叫做上下文(context),例如events,http,server,和location。
  指令放置在任何上下文之外,都被看做主上下文(main context)。events和http指令放在主上下文里面,server放在http里面,location放在server里面。
  每一行在#后面的标示为注释
  1.4 提供静态内容
  web服务器的一个重要任务就是服务文件,(例如图片,或静态HTML页面)。你会在哪里实施例子,依赖于请求,文件不同的本地目录提供服务,/data/www(包含HTML页面)和/data/images(包含图片)。这只需要在位于http中的server块里面编辑两个location块即可。
  首先,创建一个/data/www 目录然后放一个静态文件,文件包含一些文本信息。然后创建/data/iamges目录,存放一些图片。
  下一步,打开配置文件默认的配置文件以及包含了几个server块的例子,不过大部分被注释掉了。现在注释掉所有的server块,然后开始一个新的server块。
  http {
  server {
  }
  }
  通常来说,这个配置文件可以包含几个server块,通过监听的端口和服务器名称来区分。一旦nginx决定哪个server加工请求,它会测试请求中指定的URI和定义在server块里面的location指令块的参数
  添加下面的location块到server块里面。
  location / {
  root /data/www;
  }
  这个location块,指定了/前缀对比请求的URI。对于匹配的请求,URI会添加到指定的root指令的路径后面,这里是/data/www。如果多个location块被匹配到,nginx挑选最长的前缀那个。上面的location块提供了最短的前缀,因此,仅仅当所有其他的location块没被匹配的时候,这个块才会被使用。
  现在添加第二个location块
  location /images/ {
  root /data;
  }
  这会匹配以/images/开始的请求(/也会匹配,只不过是短前缀)
  server块的配置结果就像这样。
  server {
  location / {
  root /data/www;
  }
  location /images/ {
  root /data;
  }
  }
  这已经是一个可以正常监听在80端口的配置文件,通过本地机器 http://localhost/访问。在请求中以/images/开头的请求,服务器会从/data/images目录发送文件。例如,回复http://localhost/images/example.png,服务器会发送/data/images/example.png文件。如果这个文件不存在,nginx会发送一个404错误。不是以/images/开头的文件会映射到/data/www目录下面。例如 http://localhost/some/example.html  ,ngixn会发送/data/www/some/example.html 文件。
  在有时,不像自己预期的那样工作,你可以试着在access.log或error.log中找到原因,它们位于/sur/local/nginx/logs或者/var/log/nginx 目录下面。
  1.5 配置一个简单的代理服务器
  nginx的一个常用方式是作为代理服务器,意味着服务接受到的请求,把请求传递到代理服务器,然后从代理服务器取回响应,然后在发送给客户端。
  我们会配置一个基础的代理服务器,本地服务器服务图片请求,其它的请求发送给代理服务器,在这里例子中,两个服务器都会定义为简单的nginx实例。
  首先,在配置文件中,通过添加一个或多个server块定义多个代理服务器。
  server {
  listen 8080;
  root /data/up1;
  location / {
  }
  }
  这是一个简单的工作监听在8080端口的服务器,映射所有的请求到/data/up1本地文件系统目录下面,创建这个目录然后放index.html文件到里面,记住root指令放在server上下文里面(context)。当location块里面没有放root指令的时候,这个指令会生效。
  下面使用前面定义的配置文件,修改它让它作为代理服务器,在第一个location块里面,放置proxy_pass指令,然后指定参数。我们这里使用http://localhost:8080  。
  server {
  location / {
  proxy_pass http://localhost:8080;
  }
  location /images/ {
  root /data;
  }
  }
  我们会修改第二个location块,当前映射的是/images/前缀到/data/images目录下面,现在为了匹配典型的图片,修改locatio块就像下面这样。
  location ~ \.(gif|jpg|png)$ {
  root /data/images;
  }
  这参数是正则表达式匹配以.gif,.jpg,或.png结尾的文件。正则表达式应该以 ~开头。匹配的请求会映射到/data/images目录下面。
  当nginx选择一个location块服务请求的时候,它首先检查指定前缀的location指令,然后检查正则表达式。
  代理服务器的配置结果就像下面这样。
  server {
  location / {
  proxy_pass http://localhost:8080/;
  }
  location ~ \.(gif|jpg|png)$ {
  root /data/images;
  }
  }
  这个服务器会过滤所有以.gif或.jpg或png结尾的文件,映射他们到/data/images目录下面。然后传递所有的请求到代理服务器那里。
  还有更多的指令用于更深入的配置代理连接
  1.6 配置一个FastCGI代理
  nginx可以用于路由请求到FastCGI服务器.最基本的ngxin配置,可以使用fastcgi_pass使fastcgi服务和nginx服务器协同工作,而不是使用proxy_pass指令,fastcgi_param指令设置传递到FastCGI服务器的参数。在PHP中,SCRIPT_FILENAME参数用于决定脚本名,QUERY_STRING参数用于设置传递请求参数。
  配置结果如下
  server {
  location / {
  fastcgi_pass  localhost:9000;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param QUERY_STRING    $query_string;
  }
  location ~ \.(gif|jpg|png)$ {
  root /data/images;
  }
  }
  This will set up a server that will route all requests except for requests for static images to the proxied server operating on localhost:9000 through the FastCGI protocol.
  这会设置一个服务器,路由所有的除了images的request请求到代理服务器,运行在localhost:9000通过FastCGI协议。
  原文:http://nginx.org/en/docs/beginners_guide.html


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-635677-1-1.html 上篇帖子: 五、nginx搭建WordPress博客系统 下篇帖子: Nginx系列--02基本配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表