Nginx配置文件解析

忙里偷闲,研究了一下Nginx的配置文件用法。Nginx的安装和在流媒体代理上的应用,前面已经写过,这里略过,有兴趣的朋友可以参考之前的文章:

在Ubuntu上安装Nginx with nginx-http-flv-module

Nginx + Nginx-http-flv-module + FFMPEG实现直播和点播

Nginx默认的配置文件为/usr/local/nginx/conf/nginx.conf,配置文件主要包括全局、event、http、server设置,其中,event用来定义Nginx工作模式,http提供web功能,server用来设置虚拟主机。server必须位于http块内部,一个配置文件中可以包含多个server。

Nginx配置文件的详细解析如下:

#设置用户与组
#user nobody

#启动子进程数,建议数值为与CPU核心数相同
worker_processes 1

#错误日志文件,以及日志级别,[ debug | info | notice | warn | error | crit ]
error_log logs/error.log info

#进程pid文件
pid logs/nginx.pid

events {
	#每个进程可以处理的连接数,受系统文件句柄的限制
    worker_connections  1024;
}

http {
	#mime.types为文件类型定义文件
	include       mime.types;
	
	#默认文件类型
    default_type  application/octet-stream;

	#使用log_format可以自定义日志格式,名称为main
	#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

	#创建访问日志,格式采用main定义的格式
    #access_log  logs/access.log  main;

	#是否调用sendfile()进行数据复制,sendfile()复制数据是在内核级别完成的,
	#比一般的read、wirte更高效。
    sendfile        on;
	
	#开启该选项后,服务器的响应头部信息将产生独立的数据包发送,即一个响应头信息一个包
    #tcp_nopush     on;

	#保持连接的超时时间
    keepalive_timeout  65;
	
	#是否采用压缩功能,将页面压缩后传输更节省流量
	#gzip  on;
	
	#使用server定义虚拟主机
	server {
		#服务器监听的端口
		listen 80;
		
		#访问域名
		server_name www.delia.com;
		
		#编码格式,如果网页编码与此设置不同,则将被自动转码
		#charset koi8-r;
		
		#设置虚拟主机的访问日志
        #access_log  logs/host.access.log  main;
		
		#对URL进行匹配
		location / {
			#设置网页根路径,使用的是相对路径,html指的是出于Nginx安装目录下的子目录
			root html;
			
			#首页文件,先查找index.html,如果没有,再找index.htm
			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
        #
		#该块的意思是,若用户访问URL以.php结尾,则自动将该请求转交给127.0.0.1服务器,
		#通过proxy_pass可以实现代理功能
        #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
        #
		#拒绝所有人访问.ht页面
        #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;
	#指定证书文件,使用相对路径,证书需要存放在与nginx.conf同目录下
    #    ssl_certificate      cert.pem;
	#私钥文件,使用相对路径,私钥存放在与nginx.conf同一目录下
	#    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的虚拟主机代理。设置4个网页,不同的地址请求分别返回不同的网页给客户端。由于没有安装DNS,所以这里只能以IP和端口来表示。

新建一个用于测试的conf文件,命名为test_nginx.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;
	#	server_name www.domain.com *.domain.com;
        #access_log  logs/access.log  main;

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

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
		
        location ~ /\.ht {
            deny  all;
        }
    }

    server {
        listen       8080;
        server_name  localhost;

        location / {
            root   html/second;
            index  index.html index.htm;
        }
    }
	
	server {
        listen       8081;
        server_name  localhost;

        location / {
            root   html/third;
            index  index.html index.htm;
        }
    }
	
	server {
        listen       8082  default_server;
        location / {
            root   html/default;
            index  index.html index.htm;
        }
    }

}

以上conf文件中,实现了4个server,每个server通过相同不同端口来区分,每个server返回的html文件不同,4个server的html文件分别放在/usr/local/nginx/html/目录下的first、second、third和default子目录下。现在,我们先来创建这四个目录:

sudo mkdir /usr/local/nginx/html/{first,second,third,default}

创建成功后,为每个目录添加可读写权限:

sudo chmod 777 {first,second,third,default}

然后,向4个目录中添加index.html及内容,简单起见,分别添加如下内容:

echo "Welcom to the first html!" > /usr/local/nginx/html/first/index.html
echo "Welcom to the second html!" > /usr/local/nginx/html/second/index.html
echo "Welcom to the third html!" > /usr/local/nginx/html/third/index.html
echo "Welcom to the default html!" > /usr/local/nginx/html/default/index.html

执行完成后,确认相应目录下的文件被成功创建,接下来,我们就在自己的PC机上访问以上几个server,结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx配置文件是用来配置Nginx服务器的行为和功能的文件配置文件通常位于Nginx安装目录下的`conf`文件夹中,主要有两个文件:`nginx.conf`和`sites-available/default`。其中,`nginx.conf`是主配置文件,而`sites-available/default`是默认的虚拟主机配置文件。 在Nginx配置文件中,可以设置一些全局的参数,如`worker_processes`用于指定Nginx的工作进程数,`events`用于配置事件模块,`http`用于配置HTTP模块等。此外,还可以使用`include`指令来引入其他配置文件,以便更好地组织和管理配置。 配置文件中的每个指令都有特定的作用,比如`pid`指令用于指定Nginx进程的PID存放路径,`location`指令用于URL地址匹配,可以实现对动态和静态网页的过滤处理,也可以用于实现反向代理和负载均衡等功能。 总之,Nginx配置文件是用来定义Nginx服务器的行为和功能的重要文件,通过对配置文件的修改和调整,可以实现对Nginx服务器的灵活配置和定制。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Nginx配置文件解析及功能演示](https://blog.csdn.net/pokes/article/details/121979187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Nginx配置文件详解](https://blog.csdn.net/qq_41536778/article/details/104726671)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值