nginx的基础配置

154 阅读2分钟

Nginx是一个高性能的Web服务器软件,它可以作为反向代理服务器、负载均衡器、HTTP缓存以及安全防护等多种用途。在本文中,我们将介绍Nginx的基础配置,帮助您快速上手使用这个强大的工具。

安装Nginx 在开始使用Nginx之前,您需要先安装它。在Linux系统中,您可以使用包管理器来安装Nginx。例如,在Ubuntu系统中,您可以使用以下命令来安装Nginx:

sudo apt-get update
sudo apt-get install nginx

配置文件结构 Nginx的配置文件是一个文本文件,通常位于/etc/nginx/nginx.conf。该文件由多个指令块组成,每个指令块由指令和参数组成。以下是一个简单的Nginx配置文件示例:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/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 /var/log/nginx/access.log main;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    keepalive_timeout 65;

    gzip on;
    gzip_disable "msie6";

    server {
        listen 80;
        server_name example.com;
        root /usr/share/nginx/html;
        index index.html;

        location / {
            try_files $uri $uri/ =404;
        }
    }
}

在上面的配置文件中,我们定义了一个名为http的指令块,它包含了Nginx的HTTP服务器配置。在http指令块中,我们定义了一些全局参数,例如日志格式、默认MIME类型、TCP参数等。我们还定义了一个名为server的指令块,它表示一个HTTP服务器实例。在server指令块中,我们定义了服务器监听的端口、域名、网站根目录等信息。

虚拟主机配置 Nginx支持虚拟主机功能,可以在同一台服务器上运行多个网站。以下是一个虚拟主机配置示例:

server {
    listen 80;
    server_name example.com;
    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

server {
    listen 80;
    server_name blog.example.com;
    root /var/www/blog.example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

上面的配置文件中,我们定义了两个名为server的指令块,分别表示example.com和blog.example.com两个网站。每个指令块都有自己的监听端口、域名、网站根目录等信息。

反向代理配置 Nginx还可以作为反向代理服务器,将客户端请求转发到后端服务器。以下是一个反向代理配置示例:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend-server:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

上面的配置文件中,我们定义了一个名为server的指令块,它表示一个HTTP服务器实例。在location指令块中,我们使用proxy_pass指令将客户端请求转发到后端服务器。我们还使用proxy_set_header指令设置了一些HTTP请求头信息,例如Host、X-Real-IP和X-Forwarded-For等。

负载均衡配置 Nginx还可以作为负载均衡器,将客户端请求分发到多个后端服务器上。以下是一个负载均衡配置示例:

upstream backend {
    server backend-server1:8080 weight=3;
    server backend-server2:8080 weight=2;
    server backend-server3:8080 weight=1;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

上面的配置文件中,我们使用upstream指令定义了一个名为backend的upstream块,它包含了三个后端服务器。每个后端服务器都有自己的权重值,用来控制请求分发的比例。在server指令块中,我们使用proxy_pass指令将客户端请求转发到backend负载均衡器上。

HTTP缓存配置 Nginx还可以作为HTTP缓存服务器,缓存静态资源和动态页面。以下是一个HTTP缓存配置示例:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_cache my_cache;
        proxy_cache_valid 200 60m;
        proxy_cache_key "$scheme$request_method$host$request_uri";
        proxy_cache_bypass $http_pragma;
        proxy_cache_revalidate on;

        proxy_pass http://backend-server:8080;
        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_cache_path指令定义了一个名为my_cache的缓存区,并设置了缓存路径、缓存等级、缓存键值对大小和缓存过期时间等参数。在location指令块中,我们使用proxy_cache指令启用了缓存功能,并设置了缓存有效期、缓存键值对和缓存绕过等参数。

安全防护配置 Nginx还可以作为安全防护工具,保护Web应用程序免受攻击。以下是一个安全防护配置示例:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend-server:8080;

        # 防止跨站脚本攻击
        add_header X-XSS-Protection "1; mode=block";

        # 防止点击劫持攻击
        add_header X-Frame-Options "SAMEORIGIN";

        # 防止内容嗅探攻击
        add_header X-Content-Type-Options "nosniff";

        # 防止CSRF攻击
        add_header X-CSRF-Protection "1";
        add_header X-Cache-Status $upstream_cache_status;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

上面的配置文件中,我们使用add_header指令设置了一些HTTP响应头信息,例如X-XSS-Protection、X-Frame-Options、X-Content-Type-Options和X-CSRF-Protection等。这些HTTP响应头信息可以有效地防止Web应用程序受到常见的攻击。

总结 本文介绍了Nginx的基础配置,并提供了一些示例代码帮助您快速上手使用这个工具。希望这篇文章对您有所帮助!