目录
1、nginx 简介
2、nginx的工作原理
3、nginx 工作方式
4、nginx 安装
命令行安装
卸载命令
从源码构建
查看版本
测试启动
5、详解nginx配置文件
第一部分:全局块
第二部分:events块
第三部分:http
6、hosts 文件简介
1、nginx 简介
nginx [engine x] 是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器。
nginx 的特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
在高连接并发的情况下,nginx是Apache服务器不错的替代品,能够支持高达50000个并发连接数的响应。
- 使用epoll and kqueue作为开发模型。
- nginx作为负载均衡服务器:nginx既可在内部直接支持和PHP程序对外进行服务,也可支持作为HTTP代理服务器对外进行服务。
- nginx采用C进行编写,不论系统资源开销还是CPU使用效率都比Perlbal要好很多。
2、nginx的工作原理
在解析配置文件时,nginx的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。
启动nginx时,会启动一个Master进程,这个进程不处理任何客户端的请求,主要用来产生worker线程,一个worker线程用来处理n个request。
3、nginx 工作方式
在工作方式上,Nginx分为单工作进程和多工作进程两种模式。
- 在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的;
- 在多工作进程模式下,每个工作进程包含多个线程。
Nginx默认为单工作进程模式。
Nginx在启动后,会有一个master进程和多个worker进程。
下图展示了nginx模块一次常规的HTTP请求和响应的过程:
4、nginx 安装
命令行安装
nginx 的安装方式可能不同,具体取决于操作系统。
本文针对ubuntu系统,可以使用命令行进行安装。
sudo apt-get update
sudo apt-get install nginx
sudo systemctl status nginx.service
卸载命令
sudo apt-get –purge remove nginx
从源码构建
如果需要一些特殊功能,packages和ports不可用,也可以从源文件编译 nginx。虽然更灵活,但这种方法对于初学者来说可能很复杂。
查看版本
nginx -v
测试启动
ps -ef | grep nginx
从上图可以看出master进程与worker进程。
查看nginx默认端口(默认为80),使用网页的形式测试。
localhost:80
5、详解nginx配置文件
配置文件所在位置。
cd /etc/nginx
ls
配置文件内容:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
第一部分:全局块
从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以 及配置文件的引入等。
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
例如:
worker_processes auto;
这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。
第二部分:events块
events 块涉及的指令主要:
- 影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化
- 是否 允许同时接收多个网络连接
- 选取哪种事件驱动模型来处理连接请求
- 每个 word process 可以同时支持的最大连接数等
events {
worker_connections 768;
# multi_accept on;
}
上述所示表示worker proess 支持最大连接数为768。对 Nginx 的性能影响较大,在实际中应该灵活配置。
第三部分:http
Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
需要注意的是:http 块也可以包括 http全局块、server 块。
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
6、hosts 文件简介
hosts 是一个没有扩展名文件,作用是保存一些IP地址和域名的对应的文件。
- 在 Windows 系统中,该文件的路径为C:\Windows\System32\drivers\etc
- 在linux系统中,该文件的路径是/etc/hosts
sudo gedit hosts