配置模板

HTTPS配置

现在HTTPS已经普及,默认就给HTTPS的配置吧。

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

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    # 其他配置
    root /var/www/example.com;
    index index.html;

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

强制HTTPS

通过监听相同域名下的HTTP 80端口,将所有HTTP请求重定向到HTTPS。
可以将下面这段放到相应的配置文件的顶部,把其中example.com替换为自己的域名。

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

    # 301 重定向到 HTTPS
    return 301 https://$host$request_uri;
}

依然HTTP

如果确实不启用HTTPS,下面是HTTP的配置。

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

    # 其他配置
    root /var/www/example.com;
    index index.html;

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

反向代理

有时候Nginx只是一个统一入口,具体的服务由其他应用提供。

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

    root /var/www/example.com;

    location / {
        try_files $uri $uri/ @backend;
    }

    location @backend {
        proxy_pass http://127.0.0.1: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_set_header X-Forwarded-Proto $scheme;
    }
}