憨豆说安全 · 2020年08月11日

云芯一号教程 - Nginx WEB服务配置教程

  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




推荐阅读
关注数
4278
内容数
71
低成本Arm微服务器开发平台“云芯1号”教程及应用,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息