最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

全球焦点!Nginx 前端部署配置

来源:博客园

1、Nginx 默认配置

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

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

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


(资料图)

user  nginx;worker_processes  1;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {    worker_connections  1024;}http {    include       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  logs/access.log  main;    sendfile        on;    #tcp_nopush     on;    #keepalive_timeout  0;    keepalive_timeout  65;    #gzip  on;    server {        listen       80;        server_name  localhost;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            root   html;            index  index.html index.htm;        }        #error_page  404              /404.html;        # redirect server error pages to the static page /50x.html        #        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }        # proxy the PHP scripts to Apache listening on 127.0.0.1:80        #        #location ~ \.php$ {        #    proxy_pass   http://127.0.0.1;        #}        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000        #        #location ~ \.php$ {        #    root           html;        #    fastcgi_pass   127.0.0.1:9000;        #    fastcgi_index  index.php;        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;        #    include        fastcgi_params;        #}        # deny access to .htaccess files, if Apache"s document root        # concurs with nginx"s one        #        #location ~ /\.ht {        #    deny  all;        #}    }    # another virtual host using mix of IP-, name-, and port-based configuration    #    #server {    #    listen       8000;    #    listen       somename:8080;    #    server_name  somename  alias  another.alias;    #    location / {    #        root   html;    #        index  index.html index.htm;    #    }    #}    # HTTPS server    #    #server {    #    listen       443 ssl;    #    server_name  localhost;    #    ssl_certificate      cert.pem;    #    ssl_certificate_key  cert.key;    #    ssl_session_cache    shared:SSL:1m;    #    ssl_session_timeout  5m;    #    ssl_ciphers  HIGH:!aNULL:!MD5;    #    ssl_prefer_server_ciphers  on;    #    location / {    #        root   html;    #        index  index.html index.htm;    #    }    #}}

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

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

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

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

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

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

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

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

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

2、 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 等。这样,后端服务器就能获取到正确的客户端信息。

3、Nginx 配置 URL 地址后自动加上时间戳查询字符串(query string)

方法一:

可以使用 Nginx 的rewrite指令在首页 URL 地址后自动加上时间戳查询字符串。

下面是示例配置:

首页地址为:/index.html

server {    # ...    location / {        # ...        if ($request_uri ~ /index.html) {            set $timestamp "$(date +%s)";            rewrite ^ /index.html?timestamp=$timestamp;        }    }    # ...}

首页地址为:/

server {    # ...    location / {        # ...        set $timestamp "$(date +%s)";        if ($request_uri ~ ^/$) {            rewrite ^ /?timestamp=$timestamp;        }    }    # ...}

在此示例中,我们使用了rewrite指令将所有请求首页URL地址更改为带有时间戳查询字符串的URL地址。

通过该方法解决手机端 H5 Nginx 更新部署后,导致缓存问题,如显示空白页面或旧版本页面。

方法二:

可以使用 Nginx 的rewrite指令在 URL 地址后自动加上时间戳查询字符串。

下面是示例配置:

server {    # ...    location / {        # ...        set $timestamp "$(date +%s)";        rewrite ^ /$request_uri?timestamp=$timestamp;    }    # ...}

在此示例中,我们使用了rewrite指令将所有请求 URL 地址更改为带有时间戳查询字符串的URL地址。

方法三:

在 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 格式表示。

关键词: 配置文件 基本配置 虚拟主机