服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - PHP程序员玩转Linux系列 nginx初学者引导

PHP程序员玩转Linux系列 nginx初学者引导

2022-01-07 19:40陶士涵 Linux

这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,带大家初步认识一下nginx,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

PHP程序员玩转Linux系列文章:

1.PHP程序员玩转Linux系列-怎么安装使用CentOS

2.PHP程序员玩转Linux系列-lnmp环境的搭建

3.PHP程序员玩转Linux系列-搭建FTP代码开发环境

4.PHP程序员玩转Linux系列-备份还原MySQL

5.PHP程序员玩转Linux系列-自动备份与SVN

6.PHP程序员玩转Linux系列-Linux和Windows安装nginx

翻译自官网文档

nginx有一个master进程和很多个worker进程.master进程的主要目的是读取和执行配置文件,维持worker进程.worker进程真正处理请求.nginx基于事件模型和操作系统来分配worker进程,配置文件中的worker进程数一般配置成CPU的内核数.默认的配置文件名是nginx.conf,目录地址一般在/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx

开始,关闭和重载配置

nginx 开启

nginx -s reload 重新载入配置文件

nginx -s quit 优雅的退出

nginx -s reopen 重新打开日志文件

静态内容服务

打开配置文件,里面已经包含了一个server块的例子

?
1
2
3
4
http {
 server {
 }
}

默认的nginx配置文件nginx.conf里面,使用include指令包含了/etc/nginx/conf.d/此目录下后缀为.conf的所有配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
http {
 include /etc/nginx/mime.types;
 default_type application/octet-stream;
 
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
   '$status $body_bytes_sent "$http_referer" '
   '"$http_user_agent" "$http_x_forwarded_for"';
 
 access_log /var/log/nginx/access.log main;
 
 sendfile on;
 #tcp_nopush on;
 
 keepalive_timeout 65;
 
 #gzip on;
 
 include /etc/nginx/conf.d/*.conf;
}

/etc/nginx/conf.d/目录下,编辑default.conf文件,通常会有很多的配置文件,每个配置文件中都有一个server块,nginx通过他们监听的端口和server_name来区分,它还会对请求头和server块里面location指令参数比较.

?
1
2
3
4
5
server {
 location / {
 root /var/www/html;
 }
}

这个location块指定了"/"前缀,比较请求的URI,对于匹配到的URI,这个URI会被拼接到root指令指定路径的后面.换句话说,在本地文件系统中去构成路径,就是去请求/var/www/html.

如果这里有很多location指令,nginx会选择最长前缀的.上面的location块提供了一个最短前缀,只有当其他所有的location都没有匹配到,才会使用它.

下一步,增加第二个localtion块

?
1
2
3
4
5
6
7
8
server {
 location / {
 root /var/www/html;
 }
 location /images/ {
 root /data;
 }
}

当请求以/images/开始,第二个location将会匹配到 (location / 也会匹配到这个请求,但是他的前缀比第二个短)

现在它已经可以作为web服务的配置文件正常工作了,监听80端口.在本地机器输入http://localhost就可以访问到该服务.当请求URI以/images/开头,服务器会响应/data/images目录下的文件.举例:当请求是http://localhost/images/example.png,nginx会响应/data/images/example.png文件.如果该文件不存在,nginx会响应404错误.

当请求的URI不以/images/开头,该请求会被映射到/var/www/html目录.举例:请求的URI是http://localhost/some/example.html,nginx会响应/var/www/html/some/example.html文件.

应用新的配置,开启nginx或者发送reload信号给nginx的master进程,执行以下命令:

nginx -s reload

万一有不可预料的错误发生,去access.log error.log中找原因,这两个文件的目录在/usr/local/nginx/logs或者/var/log/nginx

配置简单的反向代理服务

nginx最常用的功能就是作为反向代理服务器,意味着这个服务要接收请求,把请求引到被代理的服务,从那里取回响应,发送给客户端.

我们将配置基本的反向代理服务器,这个服务处理来自本地目录的图片文件的请求,并把其他的所有请求发给代理服务器.在这个例子中,两个服务都会被定义在一个nginx实例中.

首先,定义一个代理服务器,在nginx配置文件中新添加一个server块,如下:

?
1
2
3
4
5
6
7
server {
 listen 8080;
 root /data/up1;
 
 location / {
 }
}

这个简单的服务监听8080端口(之前,我们没有使用过listen指令,因为默认是监听的80端口),映射所有的请求到本地文件系统的/data/up1目录.创建这个目录,在里面放入index.html文件.注意root指令放在了server上下文了.当location块下没有root指令时,这个root指令将会被使用.

下一步,使用上一步中的服务配合,修改一下作为反向代理服务器配置.在第一个location块中,添加一个proxy_pass指令,在参数中指明协议名和代理服务的端口(在本例,它是http://localhost:8080)

?
1
2
3
4
5
6
7
8
9
server {
 location / {
  proxy_pass http://localhost:8080;
 }
 
 location ~ \.(gif|jpg|png)$ {
  root /data/images;
 }
}

在第二个location块中,参数是个正则表达式,匹配所有后缀是.gif.jpg或者.png的请求,使用正则表达式,应该在前面加上~ .符合的请求将会被映射到/data/images目录下

配置FastCGI代理服务

nginx可以用作去路由请求到FastCGI服务,这样就可以运行一些各种框架和PHP的应用

最基本的nginx配置,使用fastcgi_pass指令替换proxy_pass指令,fastcgi_param指令设置传递给FastCGI服务器的参数.假定FastCGI服务器运行在localhost:9000.把上一部分中的反向代理配置例子拿过来,修改参数为localhost:9000.在PHP中,SCRIPT_FILENAME参数被用作确定脚本名称,QUERY_STRING 被用作传递请求参数,配置如下:

?
1
2
3
4
5
6
7
8
9
10
11
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;
 }
}

现在就创建了一个服务,这个服务将路由出了静态图片文件之外的所有请求到被代理的服务器.这个被代理的服务器是通过FastCGI协议运行在localhost:9000上的.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/taoshihan/p/6674019.html

延伸 · 阅读

精彩推荐
  • Linux将 Linux 终端与 Nautilus 文件管理器结合起来

    将 Linux 终端与 Nautilus 文件管理器结合起来

    Nautilus 是 GNOME 桌面环境中的图形化文件浏览器。你可以使用它来访问和管理系统中的文件和文件夹。 尽管并非所有人都喜欢使用终端来管理文件和目录,...

    未知812023-08-08
  • Linux理解 Linux/Unix 登录脚本的技巧

    理解 Linux/Unix 登录脚本的技巧

    有一些常见的情况,例如从Debian的包管理程序到Iaas的管理中,很多任务需要设置环境变量才能正常运行。 有时,程序通常只需要在 登陆时运行一次,例如...

    未知1042023-05-12
  • LinuxLinux系统下无法卸载挂载的目录怎么办?

    Linux系统下无法卸载挂载的目录怎么办?

    我们在日常运维中经常性会遇到需要进行磁盘的扩容、卸载、挂载等操作,但是有时候这个系统上跑的应用并没有停止或者有其他的运维同事在操作这个目...

    今日头条10302020-12-30
  • Linuxssh 登录很慢该如何解决

    ssh 登录很慢该如何解决

    这篇文章主要介绍了ssh 登录很慢该如何解决的相关资料,这里提供了两种方法,DNS反向解析及关闭ssh的gssapi认证的解决办法,需要的朋友可以参考下...

    linuxeye9922021-12-16
  • Linux在Linux系统中创建新的亚马逊AWS访问密钥的方法

    在Linux系统中创建新的亚马逊AWS访问密钥的方法

    如何在Linux系统中创建新的亚马逊AWS访问密钥?我在配置一个需要访问我的亚马逊AWS帐号的应用时被要求提供AWS访问密钥ID和秘密访问密钥,我怎样创建一个...

    Linux教程网6182019-10-30
  • Linuxlinux驱动程序开发详细介绍

    linux驱动程序开发详细介绍

    前提,一般来说内核代码的错误可能会引起一个用户进程的死亡,或者整个系统的瘫痪,更严重的后果,可能导致磁盘损伤~因此建议最好有一台实验机进行...

    Linux教程网5392019-12-17
  • Linuxlinux设置tomcat自启动的方法

    linux设置tomcat自启动的方法

    这篇文章主要介绍了linux设置tomcat自启动的方法,需要的朋友可以参考下...

    Linux教程网8512021-10-10
  • Linuxlinux top命令详解

    linux top命令详解

    这篇文章主要介绍了linux top命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    sparkdev5622022-03-01