Nginx的基本配置

Posted xuweiweiwoaini

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx的基本配置相关的知识,希望对你有一定的参考价值。

1 nginx的配置文件总览

#设置用户
#user  nobody;
#设置工作进程数
worker_processes  1;

#设置错误日志
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#设置pid
#pid        logs/nginx.pid;

#设置最大连接数
events {
    worker_connections  1024;
}

          
http {   
    include       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  logs/access.log  main;
    
    sendfile        on; 
    #tcp_nopush     on;
    
    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the php scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \\.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \\.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache‘s document root
        # concurs with nginx‘s one
        #
        #location ~ /\\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {

#设置pid
#pid        logs/nginx.pid;

#设置最大连接数
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
#设置最大连接数
events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #设置gzip   
    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #设置编码       
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \\.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \\.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache‘s document root
        # concurs with nginx‘s one
        #
        #location ~ /\\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

 

2 Nginx的虚拟主机配置一

2.1 配置虚拟主机的步骤

  • 通常情况下,为了使每个服务器可以供更多的用户使用,可以将一根服务器分为很多虚拟的子服务器,每个子服务器都是相互独立的。
  • 这些服务器是根据虚拟化技术分出来的,这样,一台服务器就可以虚拟成很多台子服务器。我们把子服务器叫虚拟主机。
  • 我们搭建好Nginx服务器之后,此时只有一台Nginx服务器,这个时候如果我们对这台服务器进行虚拟主机配置,将可以将一台Nginx服务器分割为多台独立的子服务器。
  • Nginx中配置虚拟主机的步骤主要有两个
    • 1)配置IP地址
    • 2)绑定IP地址与虚拟主机    

 

2.2 IP地址的配置

ifconfig eth0 192.168.1.9 netmask 255.255.255.0

技术分享图片

ifconfig eth0:1 192.168.1.7 broadcast 192.168.88.255 netmask 255.255.255.0

技术分享图片

ifconfig eth0:1 192.168.1.6 broadcast 192.168.88.255 netmask 255.255.255.0

 

2.2 Nginx的虚拟主机的配置

  • 在配置好IP地址之后,我们需要将对应的IP地址与对应的虚拟主机建立联系,这就是虚拟主机的配置。

 

  • 编辑ngnix.conf文件                                                   
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \\.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \\.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache‘s document root
        # concurs with nginx‘s one
        #
        #location ~ /\\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    server {
        listen       192.168.1.7:80;
        listen       192.168.1.7;
        access_log logs/server1.access.log combined;

        location / {
            root   html/server1;
            index  index.html index.htm;
        }
    }


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

 

  • 在/usr/local/nginx/html下新建server1目录,并在server1目录下新建Index.html文件
cd /usr/local/nginx/html/
touch index.html
  • 使用vim编辑器,在index.html中写入一些文字信息
  • 启动Nginx,然后在浏览器输入192.168.1.7你就看到你想要的啦

 

3 Nginx的日志文件配置

3.1 Nginx日志文件格式的配置

  • Nginx服务器在运行的时候,会有各种操作,这些关键的操作信息会记录到文件中,这些文件叫做日志文件。日志文件的记录是有格式的,我们可以按系统默认的格式去记录,也可以按照我们自定义的格式去记录。我们可以使用log_format指令来设置Nginx服务器的日志文件的记录格式。

 

  • 示例:
    • 默认是关闭的,在nginx.conf文件中  

技术分享图片

    • 先将其开启,去掉注释  

技术分享图片

    • 详细讲解上面红色字符的意思
      • remote_addr :远程地址,就是用户访问你的IP地址
      • remote_user:远程访问的用户
      • request:用户访问的资源地址
      • status:HTTP的状态码
      • body_bytes_sent: 服务器返回客户端的数据
      • http_referer:表示请求该资源来源于那个地址,即用户从哪里来
      • http_user_agent:客户端浏览器的信息
      • http_x_forwarded_for:客户端的地址    

 

3.2 Nginx日志文件存储路径的配置

  • 日志文件在记录的时候,需要存储在磁盘上,存储的路径是可以配置的,我们通常通过access_log指令来配置nginx的日志文件的存储路径。

 

  • 默认情况下是关闭的

技术分享图片

  • 开启就很简单啦,让注释去死吧,就是下面这个样子

技术分享图片

  • 如果你不想让nginx记录日志文件,可以使用如下的指令,但是你觉得实际开发中谁这样干?
access_log off;

 

3.3 Nginx日志文件的切割

  • 为了让Nginx的日志文件存储的更为合理、有序,我们需要将日志文件进行分开存储,比如我们按照时间来分开,今天的日志文件存储到一个文件中,明天的日志文件存储到另外一个文件中等等。这个时候,我们就需要用到日志文件的切割。 

 

  • 手动切割
    • ①将原来的access.log通过mv重新命名  

-技术分享图片

    • ②通过USR1这个控制信号来实现  

技术分享图片

 

  • 自动切割
    • ①新建一个批处理文件,在logs文件夹下  

技术分享图片

    • ②使用vim编辑器,去编辑此批处理文件  
D=$(date +%Y%m%d)
mv /usr/local/nginx/logs/access.log ${D}.log
kill -USR1 $(cat /usr/local/nginx/nginx.pid)

技术分享图片

 

    • ③使用crontab -e  
      • 输入crontab -e ,然后空格    
      • 输入如下的指令    

技术分享图片

 

      • 退出保存,然后y    

 

 

4 Nginx的缓存配置和其他配置

4.1 Nginx的缓存配置

  • 当我们在浏览器中浏览某个网页的时候,我们会把该网页上的一些信息存储到本地,当我们第二次浏览该网页的时候,这个网页上的某些信息就可以从本地加载,这样速度就会快很多。
  • 存储到本地的这些信息我们就称为缓存。但是,缓存并不是越多越好,缓存文件过大,会影响我们正常的上网,所以,缓存需要定期清理。

 

  • 在location /{}下面配置
location ~ .*\\.(jpg|png)$ {
  expires 2d;  
}

技术分享图片

 

 

4.2 压缩功能

  • 通过gzip压缩技术,可以使原来的网页的内容大小压缩成原来的30%,这样,用户在访问网页的时候,由于传输的内容比原来的内容小很多,所以访问的速度会快很多。Nginx服务器支持gzip压缩技术,但是,使需要配置的。

 

  • 默认情况下,gzip是关闭的

 技术分享图片

  • 开启,很简单哦,直接干死注释,让注释去死

技术分享图片

  • 当然,一些文件很小,就不需要进行压缩了,比如最低的临界值就是1k
gzip_min_length 1k;

技术分享图片

  • 当然,这些文件都放在缓存中,所以需要配置缓存了
gzip_buffers 4 16k;

技术分享图片

  • 设置gzip的HTTP协议的版本是1.1
gzip_http_version 1.1;

技术分享图片

  • 开启判断客户端是否支持gzip。
gzip_vary on;

技术分享图片

 

以上是关于Nginx的基本配置的主要内容,如果未能解决你的问题,请参考以下文章

linux学习:Nginx--常见功能配置片段与优化-06

将 nginx rtmp 片段发送到 WebRTC

Nginx配置文件详细介绍

Nginx 跨域

HLS NGINX-RTMP [错误] 1281#0:* 58 hls:强制片段拆分:10.002 秒

Nginx的配置