0、Nginx 默认配置

Nginx的默认配置位于nginx.conf文件中。根据安装方式和操作系统不同,它的位置可能略有不同,一般在以下目录中:

  • Linux:/etc/nginx/nginx.conf
  • Windows:C:\nginx\conf\nginx.conf

以下是Nginx默认配置的示例:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
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;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

上面的配置文件定义了Nginx的一些基本选项,如用户、工作进程数、日志文件位置等。它还定义了NGINX事件块,并为HTTP请求提供了一些基本配置,如文件类型映射、日志格式、发送文件等。

请注意,这是Nginx默认的配置,您可以根据您的需求对其进行修改。在生产环境中,建议您对配置文件进行定制以实现最佳性能。

为了使Nginx适合您的特定需求,您可以对配置文件进行更改。以下是一些常见的配置任务:

  1. 更改端口:默认端口为80,但您可以更改它来避免与其他服务的冲突。

  2. 指定服务器名称:通过指定服务器名称,您可以为您的服务器创建自定义DNS名称。

  3. 配置虚拟主机:通过配置虚拟主机,您可以同时在一台服务器上运行多个网站。

  4. 启用SSL/TLS:通过启用SSL/TLS,您可以加密您的网站数据并保护它们免受黑客攻击。

  5. 配置代理:通过配置代理,您可以将请求从一台服务器转发到另一台服务器。

这些是Nginx配置的一些基本任务,您可以通过搜索互联网获得有关如何进行这些任务的详细信息。

1、 Nginx 前端部署基本配置

在 NGINX中 配置前后端分离时,前端部署基本配置的示例:

server {
    listen 80;
    server_name example.com;
    root /path/to/your/frontend;

    location / {
        try_files $uri $uri/ /index.html;
    }

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

上面的配置定义了一个服务器,监听80端口,服务器名为example.com。前端文件的根目录是/path/to/your/frontend。当用户请求根目录时,NGINX将尝试使用try_files命令提供请求的文件。如果文件不存在,则返回/index.html。

当用户请求/api时,请求将被代理到后端服务器的相应端口,并设置了一些代理头,如Host、X-Real-IP、X-Forwarded-For等。这样,后端服务器就能获取到正确的客户端信息。

2、Nginx 配置 url 自动加上时间戳查询字符串(query string)

在 nginx 配置中使用 $arg_timestamp 变量实现 url 自动加上时间戳查询字符串(query string)。以下是示例配置:

location / {
    if ($args = "") {
        rewrite ^ /?timestamp=$time_iso8601 permanent;
    }
    proxy_pass http://your_upstream;
}

上面的配置使用了$args变量检查当前请求是否存在查询字符串。如果不存在,则使用rewrite命令将请求重写为带有timestamp查询字符串的请求。$time_iso8601变量表示当前时间,并以ISO 8601格式表示。