您的位置:

nginx指定配置文件详解

一、配置文件介绍

nginx的配置文件主要由指令和块组成,以“;”分号作为结束符号,以“{}”大括号作为块的开始和结束标志。

nginx的默认配置文件在安装目录下的conf文件夹中,文件名为nginx.conf。默认配置文件中分别给出了http、server、location等不同范围的指令。如果需要定制自己的配置,则需要在该文件中进行修改或者新建一个新的配置文件并在启动时进行指定。

在安装目录下的sbin文件夹中,有一个nginx可执行文件,通过命令行启动nginx时,可以在命令行中使用-c选项指定配置文件,如:nginx -c /home/user/nginx.conf。

二、http模块相关指令

1、listen指令

server {
    listen 80;
}

listen用于指定server需要监听的端口,默认80端口。多个端口可以用空格分开。

2、server_name指令

server {
    server_name example.com;
}

server_name用于指定server对应的域名。可以指定多个域名,中间用空格隔开。

3、access_log和error_log指令

server {
    access_log /path/to/access.log;
    error_log /path/to/error.log;
}

access_log和error_log分别用于指定访问日志和错误日志存放的路径。可以指定多个日志文件,中间用空格隔开。

三、server模块相关指令

1、location指令

server {
    location / {
        root /var/www/html;
    }
}

location用于指定url对应的路径。/表示匹配所有请求,/xxx表示匹配以xxx开头的请求,=xxx表示精确匹配xxx请求。需要在{}中指定该url对应的操作,如root、proxy等。

2、rewrite指令

server {
    rewrite ^/(.*)\.html$ /$1.php last;
}

rewrite用于url的重写。上面的例子表示将.html结尾的url重定向到同名的.php文件。

3、proxy_pass指令

server {
    location /api/ {
        proxy_pass http://127.0.0.1:8000/;
    }
}

proxy_pass用于转发请求到其他服务。上面的例子表示将/api/开头的请求转发到本机的8000端口。

四、upstream模块相关指令

1、upstream指令

http {
    upstream backend {
        server 127.0.0.1:8000;
        server 10.0.0.1:8000;
    }
    server {
        location /api/ {
            proxy_pass http://backend/;
        }
    }
}

upstream用于指定后端服务的地址和一些负载均衡策略。以上面的例子为例,表示将/api/开头的请求转发到backend里的某一个服务器上。

2、ip_hash指令

http {
    upstream backend {
        ip_hash;
        server 127.0.0.1:8000;
        server 10.0.0.1:8000;
    }
    server {
        location /api/ {
            proxy_pass http://backend/;
        }
    }
}

ip_hash是upstream的一个策略指令,表示将同一个客户端的请求转发给同一个后端服务。这个指令需要放在server的上面。

五、结束语

nginx的配置文件功能强大,可以用于指定端口、域名、url转发、负载均衡等等。通过学习nginx的配置文件,可以更灵活地配置自己的服务器,并且可以更好地控制网络流量、负载均衡等方面的问题。