关于nginx配置记录

    现有很多项目,在本地开发的时候是一个单独的项目,但是在测试或者生产环境的时候,由于服务器的限制,会有多个项目同时部署在同一台服务器上的情形。这个时候就需要在nginx的配置文件中进行相关的配置。

    第一种情况,整个项目会启动自己的服务,占用特定的端口。需要配置的地方如下

    在http下server的外层配置

upstream example {
    ip_hash;
    server localhost:8008
}

首先定义一个服务的名称和对应的占用端口,之后访问该服务,则是对应该服务器的地址后面加上该服务的名称比如叫example,接着在server下增加

location ^~/example/ {
            proxy_buffer_size 128k;
            proxy_buffers 32 32k;
            proxy_busy_buffers_size 128k;
            proxy_pass   http://example/;
            #expires 4h;
            port_in_redirect off;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forward-For $remote_addr;
        }
        location ^~/assets/ {
            proxy_buffer_size 128k;
            proxy_buffers 32 128k;
            proxy_busy_buffers_size 128k;
            proxy_pass   http://example/assets/;
            #expires 4h;
            port_in_redirect off;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forward-For $remote_addr;
        }
        # example rewrite
        set $oprRewrite 0;
        if ($http_referer ~* /example/){
          set $oprRewrite 1;
        }
        if ($request_uri ~* /static/) {
          set $oprRewrite 1$oprRewrite;
        }
        if ($oprRewrite = 11) {
          rewrite ^(.*)$ /example$1 last;
        }

第一部分把配置的服务和对应的文件夹目录对应起来,接着将该项目下需要使用到的静态资源的目录都做个文件映射。对应的文件映射可以以上的两种方式,第一种,确认该静态文件资源文件夹不会有重名的可能,所以直接匹配转发。第二种,某个文件夹有重名的可能性,所以做两层匹配,确认是该服务下的文件夹才匹配到对应文件夹下的文件。

location ^~/interface/ {
            proxy_buffer_size 128k;
            proxy_buffers 32 128k;
            proxy_busy_buffers_size 128k;
            proxy_pass   http://example/interface/;
            #expires 4h;
            port_in_redirect off;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forward-For $remote_addr;
        }

如果,既然是一个完整的服务,不要忘记对其调用的接口,也增加相应的路径映射。

第二种情况,只是一个单纯的前端页面,不涉及服务。当然肯定是在该服务器下已经有相关服务配置好了,直接调用即可

猜你喜欢

转载自blog.csdn.net/banxia561/article/details/80814044