Nginx是一个高性能的HTTP和反向代理WEB服务器。Nginx具有占用内存小,并发能力强的特点,是搭建WEB服务的常用工具。
我们在开发板上实践Nginx的安装和WEB服务的配置。
1.安装Nginx
安装Nginx非常简单。
sudo apt-get install nginx
安装成功后,可以用命令来确认安装结果。
jishu@Jishu:~/debs$ nginx -v
nginx version: nginx/1.14.1
看到版本号,说明Nginx安装正确。
2.Nginx相关目录
配置Nginx服务涉及的目录如下:
Nginx日志自动轮转配置文件,用于配置logrotate服务的日志切割
/etc/logrotate.d/nginx
Nginx主配置文件、目录
/etc/nginx/nginx.conf
/etc/nginx/conf.d
cgi相关配置文件
/etc/nginx/fastcgi_params
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
编码转换映射文件,用于在输出内容到客户端时进行编码转换
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/win-utf
设置http协议的Content-Type与扩展名的映射关系
/etc/nginx/mime.types
用于配置出系统守护进程管理器管理方式
/etc/init.d/nginx
Nginx模块目录
/etc/nginx/modules-enabled
/etc/nginx/modules-available
/usr/lib/nginx/modules
Nginx服务的启动命令目录
/usr/sbin/nginx
Nginx日志目录
/var/log/nginx
Nginx WEB服务HTML文件目录
/usr/share/nginx/html
3.Nginx配置文件
Nginx的主配置文件是/etc/nginx/nginx.conf,我们来了解一下Nginx 1.14版本中配置文件的各个配置项。
user www-data; #设置nginx服务系统的使用用户为www-data
worker_processes auto; #设置工作进程数,auto为和CPU核数一致
pid /run/nginx.pid; #Nginx服务启动时的pid目录位置
include /etc/nginx/modules-enabled/*.conf; #加载enable模块
events {
worker_connections 768; #每个工作进程允许最大连接数
# multi_accept on; #工作进程是否同时接受所有的新连接
}
http {
##
# Basic Settings
##
sendfile on; #是否使用sendfile系统调用来传输文件
tcp_nopush on; #是否激活Linux的TCP_CORK socket选项
tcp_nodelay on; #是否激活Linux的TCP_NODELAY选项
#上面三个参数用于高效文件传输模式
keepalive_timeout 65; #设置请求的TCP超时时间
types_hash_max_size 2048; #设置MIME type映射扩展名hash表的大小
# server_tokens off; #设置隐藏Nginx版本号
# server_names_hash_bucket_size 64; #设置保存服务器名字的hash表大小
# server_name_in_redirect off; #设置301重定向URL中的服务器名类型
include /etc/nginx/mime.types; #包含mime.types
default_type application/octet-stream; #设置HTTP响应的默认类型
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
#设置安全访问中的TLS版本
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; #包含conf.d目录中的配置文件
include /etc/nginx/sites-enabled/*; #包含sites-enabled目录中的配置文件
}
Nginx默认的WEB服务器配置文件为sites-enabled/default。
server { #定义虚拟主机
listen 80 default_server; #监听80端口,并定义为default_server
listen [::]:80 default_server; #监听IPV6地址的80端口
# SSL configuration #配置SSL
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
......
#
# include snippets/snakeoil.conf;
root /var/www/html; #定义WEB服务器资源文件的根目录
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _; #定义监听的域名
location / { #为匹配的 URI 进行配置
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server #设置PHP的FastCGI server
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
3.启动Nginx
Nginx安装好后,可以通过命令来启动Nginx服务。
sudo service nginx start
Nginx服务启动后,可以用lsof命令看查看80端口的占用情况。如果lsof没有安装,可以直接用apt install命令安装。
sudo apt install lsof
80端口的占用情况如下:
jishu@Jishu:~$ sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 501 root 6u IPv4 16633 0t0 TCP *:http (LISTEN)
nginx 501 root 7u IPv6 16634 0t0 TCP *:http (LISTEN)
nginx 502 www-data 6u IPv4 16633 0t0 TCP *:http (LISTEN)
nginx 502 www-data 7u IPv6 16634 0t0 TCP *:http (LISTEN)
nginx 503 www-data 6u IPv4 16633 0t0 TCP *:http (LISTEN)
nginx 503 www-data 7u IPv6 16634 0t0 TCP *:http (LISTEN)
......
Nginx WEB服务器启动正常,然后就可以在浏览器中通过IP地址访问了。
Nginx服务常用的命令还有重启、停止,命令如下:
service nginx restart
service nginx stop