nginx简单的配置

摘要:之前一篇博文简单编译安装了nginx,接下来我们看下nginx的配置文件nginx.conf和nginx如何处理静态内容,设置反向代理等配置。

nginx已经安装完成了,nginx及其模块的工作方式在配置文件中确定。默认情况下,配置文件被命名nginx.conf 并放在目录 /usr/local/nginx/conf中 /etc/nginx,或 /usr/local/etc/nginx,根据上次的安装,我的nginx.conf文件放在/usr/local/nginx/conf中。我是配合官方文档和nginx.conf配置文件查看和修改测试。

简单的配置文件结构

nginx由模块组成,这些模块由配置文件中指定的指令控制。指令分为简单指令和块指令。一个简单的指令由名称和参数组成,用空格分隔,以分号(;)结尾。块指令与简单指令具有相同的结构,但它不是以分号结尾,而是以大括号({和})包围的一组附加指令结束。如果块指令在大括号内可以有其他指令,则称为上下文(示例: events, http, server和 location)。#注释 (#后面的就是注释了)。为了方便测试我已经把nginx.conf中的内容全部清空,只留下如下内容

events {

}
http {
    server {
        location / {
            root /usr/local/nginx/html;
        }
    }
}

url输入地址刷新页面,看见Welcome to nginx!页面,看来这样配置是没有问题的,非常完美。

处理静态内容

一个重要的Web服务器任务是提供文件(例如图像或静态HTML页面),这些都是在http模块中配置server模块然后再配置location模块来操作。首先我们创建两个目录/usr/local/nginx/html(这个目录不用创建了,因为nginx默认已经有了,我的是一个index.html和50x.html文件)和/usr/local/nginx/images,然后/usr/local/nginx/images目录中放一张名字为example.png图片。然后http模块中这样配置

server {
    location / {
        root /usr/local/nginx/html;
    }
}

首先此location指定 / 与请求中的url进行比较的“ ”前缀,对于匹配请求url会匹配到此location / { }模块,然后找到指定的/usr/local/nginx/html目录中的HTML文件,如果存在多个location模块,则nginx优先选择最长的匹配的模块,当所有location模块无法匹配是,就会选择location  / {}模块进行匹配。

接下来再增加第二个location模块

server {
    location / {
        root /usr/local/nginx/html;
    }
		
    location /images/ { 
        root /usr/local/nginx/; 
    } 
}

这样就可以,nginx默认监听80端口,你在地址访问http://localhost/images/example.png,服务器将从/usr/local/nginx/images目录中查找文件,不以URI开头的请求/images/将映射到/usr/local/nginx/html目录,例如,响应 http://localhost/50x.html请求nginx将发送/usr/local/nginx/html/50x.html文件。

设置简单的代理服务器

nginx的一个常见用途是将其设置为代理服务器,这意味着服务器接收请求,将它们传递给代理服务器,从中检索响应,然后将它们发送给客户端。我们将配置一个基本代理服务器,它使用来自本地目录的文件处理图像请求,并将所有其他请求发送到代理服务器。配置代理服务器如下

http {
	server {
	    listen 8080;
	    root /usr/local/nginx/html;
		
	    location / {
	    } 
	}
	
	server {
        location / {
            proxy_pass http://localhost:8080/; 
        }
			
        location ~ \.(gif|jpg|png)$ {
            root /usr/local/nginx/images; 
        } 
	}
}

该参数location ~ \.(gif|jpg|png)$ {}是一个正则表达式匹配结尾的所有URI .gif,.jpg或.png。应该以正则表达式开头~。相应的请求将映射到该/usr/local/nginx/images目录。当nginx选择一个location块来提供请求时,它首先检查指定前缀的位置,刚才讲location优先匹配最长前缀,然后检查正则表达式。如果与正则表达式匹配,则nginx选择此项location,否则,它会选择location / {}模块。

此服务器将过滤以.gif, .jpg或结束的请求,.png 并将它们映射到/usr/local/nginx/images目录,比如直接访问http://localhost/example.png,服务器会自动将匹配的规则的路径映射到/usr/local/nginx/images目录,并将所有其他请求传递给上面配置的代理服务器。

一个简单的php站点配置

假如此时请求“/index.php”,nginx会与正则表达式“ \.(php)$” 匹配。然后请求被传递给侦听localhost:9000的FastCGI服务器。该fastcgi_param指令设置FastCGI的参数SCRIPT_FILENAME为“/data/www/index.php”,并FastCGI的服务器执行文件。变量$document_root等于root指令的值,变量$fastcgi_script_name等于请求URI,即“/index.php”。

events {

}
http {
	server {
	    location / {
			root /usr/local/nginx/html;
	    }

		location ~* \.php$ {
			fastcgi_index   index.php;
			fastcgi_pass    127.0.0.1:9000;
			include         fastcgi_params;
			fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
			fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
		}
	}
}
结束语:感谢您对本网站文章的浏览,欢迎您的分享和转载,但转载请说明文章出处。
Top