vlambda博客
学习文章列表

程序员必备|Nginx初探

nginx作为程序员必备技能,必须学习一下,这篇博文作为记录安装与初步使用nginx学习笔记。

安装Nginx

官网提供了两种主流安装nginx的方式,分别是Linux系统与FreeBSD系统,由于笔者使用的MacOs系统是基于FreeBSD系统, 可以使用 pkg 或者 port 安装nginx


我们可以选择 homebrew 进行快速安装,对新手很友好。

# brew install nginx
Docroot is: /usr/local/var/www

The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.

nginx will load all files in /usr/local/etc/nginx/servers/.

To have launchd start nginx now and restart at login:
brew services start nginx
Or, if you don't want/need a background service you can just run:
nginx
sudo nginx
stop — fast shutdown
quit — graceful shutdown
reload — reloading the configuration file
reopen — reopening the log files
ps -ax | grep nginx
kill -s QUIT <pid>
events {
   worker_connections 1024;
}

http {
   server {
       location / {
            root /data/www;
      }
       location /images/ {
           root /data;
      }
  }
}
events {
   worker_connections 1024;
}


http {
   server {
       location / {
           proxy_pass http://localhost:8080;
      }
       location ~ \.(gif|jpg|png)$ {
           root /data/images;
      }
  }

   server {
       listen 8080;
       root /data/proxy;

       location / {
      }
  }
}

[Beginner’s]    http://nginx.org/en/docs/beginners_guide.html 

[Installing Nginx in Mac OS X Maverick With Homebrew]    https://medium.com/@ThomasTan/installing-nginx-in-mac-os-x-maverick-with-homebrew-d8867b7e8a5a 


参考


  • Proxy_paas:设置对应的代理服务器URL

  • ~ \.(gif|jpg|png)$:正则表达式,将以 .gif, .jpg, png结尾的请求转到 /data/images 路径


我们简单修改之前的配置文件:


           <---              <---

client   --->  nginx ---> proxy server


nginx可以用来配置代理,即当服务器收到请求时将请求先转发给代理服务器,然后将从代理服务器收到的返回信息发送给客户端

Nginx配置代理


  • 访问 localhost, nginx将会读取 /data/www/index.html, 若不存在将会报404

  • 访问localhost/images/test.png, nginx将会读取 /data/images/test.png(这里要注意路径),若不存在将会报404

更新以上配置文件(不设置端口号时默认端口为80),并且重启nginx后,


以上配置文件定义两个路由,需要注意的是路由的匹配规则为最长路径匹配:即若url以 /images 开头, location / 也能匹配到,但是他不是最长路径,所以会匹配到下面的 location /images/

nginx安装完毕后,默认的配置文件 nginx.conf 会存放在/usr/local/etc/nginx/nginx.conf 目录,为了学习配置文件,我们可以先将nginx.conf 重命名为 nginx.back.conf,再新建 nginx.conf 文件,如下:

Nginx配置文件


/usr/local/var/log/nginx 存放nginx运行日志,包括access.log,  error.log

/usr/local/etc/nginx/nginx.conf 存放nginx的默认配置文件,如果nginx.conf被改名,nginx将会启动失败

/usr/local/var/run/nginx.pid 存放nginx运行线程信息

在MacOs10.15.3系统中,用homebrew安装nginx,以下路径需要注意/

几个路径


停止nginx进程,可以通过 ps 命令来查找 nginxpid, 也可以打开 /usr/local/var/run/nginx.pid 文件查看pid


当我们修改nginx的配置文件时,必须reload配置文件或者重启nginx才能生效。

当nginx启动之后,我们可以通过以下命令来控制它。ngixn -s <command>

nginx默认的配置文件nginx.conf在/usr/local/nginx/conf, /etc/nginx, 或/usr/local/etc/nginx

Nginx常用命令


nginx有一个主线程(main process)和多个工作线程(worker process),nginx利用基于事件模型(event-based model)和系统依赖机制(OS-dependent mechanisms),在工作线程间有效地分发请求,主线程用来读取和运行配置,以及维护工作线程,工作线程个数可以在配置文件中定义,也可更加可用的CPU核心数自动变化

Nginx Hello World


nginx默认的端口号为8080,以上命令执行完后在浏览器中打开localhost:8080, 即可看到nginx的默认主页


启动nginx


安装成功之后,命令后应该会出现以下的语句: