Nginx的一些常用配置汇总

  

Nginx的一些常用配置汇总

Nginx是一个高性能的HTTP和反向代理服务器。在使用Nginx的过程中,下面这些常用的配置是必不可少的。

1. 为域名配置SSL证书

如果您的网站需要使用SSL证书来保护数据传输的安全,您需要为您的域名配置SSL证书。Nginx支持使用Let's Encrypt等免费的SSL证书。您可以通过以下步骤配置您的SSL证书。

首先,您需要安装certbot:

sudo apt-get update
sudo apt-get install certbot

安装完成后,您可以使用以下命令配置证书:

sudo certbot certonly --nginx -d example.com -d www.example.com

其中,example.com是您的域名。这个命令会自动检测您的Nginx配置,并为您的域名生成SSL证书。

2. 为静态资源添加缓存

如果您的网站包含大量的静态资源,如图片、CSS和JavaScript文件,为这些资源添加缓存可以显著提高网站的性能。可以使用以下配置为这些资源添加缓存:

location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

这个配置会将静态资源的过期时间设置为30天,并且添加了缓存控制头。这将告诉浏览器在30天内缓存这些资源并从缓存中加载。

3. 示例配置1

下面是一个示例的Nginx配置:

user nginx;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    sendfile on;

    gzip on;
    gzip_types text/plain text/xml application/xml application/json;

    server {
        listen 80;
        server_name example.com www.example.com;

        return 301 https://$server_name$request_uri;
    }

    server {
        listen 443 ssl http2;
        server_name example.com www.example.com;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }

        location /static/ {
            alias /var/www/example/static/;
            expires 30d;
            add_header Cache-Control "public, no-transform";
        }
    }
}

这个配置文件包含了一个监听80端口的HTTP服务,以及一个监听443端口的HTTPS服务。HTTP服务会将请求重定向到HTTPS服务。HTTPS服务会将所有动态请求通过反向代理转发到8000端口,并将所有以/static/开头的请求直接映射到本地文件系统中的静态资源,其中静态资源的缓存时间为30天。

4. 示例配置2

下面是另一个示例的Nginx配置:

user nginx;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    sendfile on;

    gzip on;
    gzip_types text/plain text/xml application/xml application/json;

    server {
        listen 80;
        server_name example.com www.example.com;

        return 301 https://$server_name$request_uri;
    }

    server {
        listen 443 ssl http2;
        server_name example.com www.example.com;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

        location /api/ {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }

        location / {
            root /var/www/example;
            index index.html;
        }
    }
}

这个配置文件包含了一个监听80端口的HTTP服务,以及一个监听443端口的HTTPS服务。HTTP服务会将请求重定向到HTTPS服务。HTTPS服务会将所有以/api/开头的请求通过反向代理转发到8000端口,并将所有其他请求映射到本地文件系统中的根目录中,并使用index.html作为默认的访问文件。

相关文章