nginx简介&nginx基本配置和优化
阅读原文时间:2023年07月08日阅读:1

一、nginx简介

  Nginx是俄罗斯人编写的一款高性能HTTP和反向代理服务器。Nginx能够选择高效的epoll(Linux2.6内核)、kqueue(FreeBSD)、eventport(Solaris 10)作为网络I/O模型,再高连接并发的场景下,Nginx是Apache服务器非常不错的替代品,它能够支持50000个并发连接数的响应,而CPU、内存等系统资源消耗却非常低,运行非常稳定。

2.1 它可以高并发连接

  官方测试Nginx可以支持5w并发连接,在实际生产环境中可以支持2~4w并发连接数。这得益于Nginx使用了最新的epoll和kqueue网络I/O模型,而Apache则使用的老的select模型。

2.2 内存消耗少

2.3 成本低廉

二、Nginx的基本配置和优化

#使用的用户和组
#user nobody;
#指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍,例如两个4核CPU,则总核数为8)
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;

include https\_params.conf;

server {  
    listen       8888;  
    server\_name  localhost;

    #charset koi8-r;

    #access\_log  logs/host.access.log  main;

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

    location /test {  
        proxy\_pass https://www.baidu.com;  
        proxy\_set\_header Host $host;  
        proxy\_set\_header X-Real-IP $remote\_addr;  
        proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;  
        proxy\_set\_header X-Server-IP $server\_name;  
        proxy\_set\_header X-Server-Port $server\_port;  
        proxy\_set\_header X-Forwarded-Proto $scheme;

        proxy\_connect\_timeout   30;  
        proxy\_send\_timeout      30;  
        proxy\_read\_timeout      300;  
    }

    #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;  
#    }  
#}复制

}

上面是Nginx的nginx.conf配置文件,可见配置文件的构成如下:

….
events {
….
}
….
http {
….
server {
….
}
server {
….
}
….
}

1.1 什么是虚拟主机

  其实就是把一台运行在互联网上的服务器划分成多个“虚拟”的服务器,并且每一台虚拟主机都具有独立的域名和完整的Internet服务器功能。同一台服务器上的不同虚拟主机是各自独立的,可由客户自行管理。不过一台服务器只可以支持一定数量的虚拟主机,如果超出这个数量,那么客户在使用时将会发现性能急速降低。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。如下是一个虚拟主机的代码:

server {
listen 8000;
server_name somename alias another.alias;

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

}

1.2 配置基于IP的虚拟主机

  Linux、FreeBSD操作系统都允许添加ip别名。IP别名背后的概念很简单:可以在一块物理网卡上绑定多个ip地址。这样就可以在单一网卡的同一个服务器上运行多个基于ip的虚拟主机,nginx多ip虚拟主机配置如下:

http{
#第一个虚拟主机
server {
listen 192.168.1.1:8000;
server_name somename alias another.alias;

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

}
#第二个虚拟主机
server {
listen 192.168.1.2:8000;
server_name somename alias another.alias;

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

}
}

1.3 配置基于多域名的虚拟主机

  基于域名的虚拟主机是最常见的虚拟主机。只需配置你的DNS服务器,将每个主机名映射到正确的ip地址,然后配置Nginx服务器,令其识别不同的主机名就可以了。Nginx配置如下:

http{
#第一个虚拟主机
server {
listen 8000;
server_name www.baidu.com;

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

}
#第二个虚拟主机
server {
listen 8000;
server_name www.weibo.com;

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

}
}