Nginx学习笔记:Nginx简介

本文是对自己学习的一个总结


正向代理和反向代理

我们都是知道nginx是充当着一个中间人的角色。使用nginx时我们的访问并不是直接到达想要访问的服务器的,总是先到达nginx,然后在到达服务器。

其中根据我们访问方式的不同,可以将代理分为正向代理和反向代理。

  • 正向代理

正向代理是指,我们想访问一个网站A而访问不到,但是服务器B可以访问A,并且我们也可以访问B,那么我们就可以先访问B然后由B来访问A。A将数据返回给B,B再将数据返回给我们。

这就是正向代理,我们用的VPN就是正向代理。在这个过程中,尽管我们是通过B访问A的,但是输入网址的时候我们并不会输入B的网址,而是直接输入A的网址。整个过程中我们感觉不到B在其中起作用,感觉就像是直接访问了我们想要的服务器。

  • 反向代理

反向代理和正向代理相反,正向代理是隐藏代理细节,而反向代理是隐藏访问的真正服务器。

比如一个网站的服务器有多个,是分布式的。我们访问这个网站的时候,不用在意最终是哪个服务器给我们提供服务,我们只需要输入固定的网址,也就是代理的网址。代理会将我们的请求分配给某一个服务器(当然这个过程我们不知道,整个过程的感觉就是所有的服务都是代理一个服务器提供的)。



 


Nginx的配置文件

我使用的是Mac,在Mac中,nginx的默认安装位置是   /usr/local/etc/nginx  。该路径下有一个nginx.conf的文件,这个文件就是nginx的配置文件。下面就讲解一下配置文件的各种细节。

nginx的默认的配置文件很多东西都被注释掉了,这一次的讲解是从上到下讲解各属性的意义,并且会自动将部分注解删掉,又加上一些自己的注释。

扫描二维码关注公众号,回复: 11593202 查看本文章
  • 基本配置

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;

1、user nobody;

这一行表示以什么身份的用户来运行nginx。nobody是linux的一种用户。linux上的文件都是有权限的,有些文件的访问和修改需要密码。nobody这类用户就没法访问一切需要密码的文件,它是一种无密码的用户。

如果想要以高权限的用户来运行nginx,可以将nobody改成root或者www。

2、worker_processes 1;

这一行表示nginx拥有的进程数,这些进程就是用来处理请求的,当然是多一点比较好,不过也不是越多越好。

一般来说进程数和CPU相关,一般是CPU的一倍或两倍。如果只有一个CPU,那么worker_processes = 1 或worker_processes = 2。如果有八个CPU,那么worker_processes = 8 或worker_processes = 16。

3、error_log logs/error.log;

配置全局错误日志及类型,[debug | info | notice | warn | error | crit],默认是error。

这个可以写多行,将运行时发生的各类信息存储到不同的日志文件中。error_log logs/error.log 。 这一行忽略了日志文件的类型,那它的类型就默认是error。当nginx发生error时,信息就会被记录在  logs/error.log 之中(路劲就是nginx所在路径,这里我没测试)。当然路径也是可以自定义的

4、pid logs/nginx.pid;

这个pid记录着进程的编号。

 

  • 配置工作模式和连接数

events {
    worker_connections  1024;
}

worker_connections表示每个进程可处理的连接数的上限。nginx可以同时处理的连接数就是worker_connections * worker_processes。

 

  • 配置http服务器

 

  • 配置虚拟主机

server {
        listen       8080;    //配置服务器端口
        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;
        #}
    }

注释部分先不用管,只管location这个属性。

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

location配置的是服务器的位置。 / 这个符号表示分隔,它分隔的是域名和文件。比如我们令server_name = luckincoffee.com,listen = 80。那么域名就应该是luckincoffee.com:80。那么后面就应该是访问资源的路径,那么这个路径和域名就应该由 / 来分隔开。

root表示资源文件的根目录,Index表示资源文件在这个根目录下的具体路径。

其中默认root = html,根目录默认nginx文件底下的html文件夹,在mac中是/usr/local/Cellar/nginx/1.17.3_1/html文件夹。

index是文件相对于跟文件夹的路径,这个路径可以是多个,在默认中是html文件夹下的index.html或index.htm文件。

在上面的配置中有个文件的路径是/usr/local/var/www/index.html,那么我们输入localhost:80/index.html就能访问到这个文件。
























 

猜你喜欢

转载自blog.csdn.net/sinat_38393872/article/details/102819737