Nginx部署筆記-經常使用配置總結

最近部署 nginx的小總結,作個記錄。

1、服務端口代理跳轉第三方地址

項目中配有除本地服務地址外的第三方服務地址,假設其地址爲https://www.example.com,那麼訪問http://localhost:8000/todo/xxx將會被代理至https://www.example.com/todo/xxxhtml

http {
    # 其餘省略
    server {
        listen       8000; # 監聽端口
        server_name  localhost; # 前端地址
        root   project; # 前端項目文件目錄

        location ^~/todo/{
            rewrite /(.*)$ /$1 break;
            proxy_pass https://www.example.com;# 跳轉第三方地址
        }
    }
}

2、登陸驗證+跳轉至登陸頁

適用場景用戶跳過登陸頁直接訪問http://localhost:8000/System/html前端

若是以前沒有登陸過/Cookie過時失效,就會跳轉至http://localhost:8000/login.html登陸頁,nginx

若想要在登陸頁成功登錄以後跳轉回原來想要訪問的地址,從Cookie中獲取就行了。api

http {
    # 其餘省略
    server {
        listen       8000; # 監聽端口
        server_name  localhost; # 前端地址
        root   project; # 前端項目文件目錄

        location ^~/System/html{
            auth_request /auth;
            error_page 401 = @error401;# 401爲沒有訪問權限/需進行登陸驗證
        }

        location /auth {# 用戶登陸驗證
            internal;# 該location只能被內部調用,外部訪問無效->404
            proxy_set_header Host $host;
            proxy_pass_request_body off;
            proxy_set_header Content-Length "";
            proxy_pass http://localhost:8001/LoginVerification;# 用戶登陸驗證地址
        }

        location @error401 {
            add_header Set-Cookie "redirect=$scheme://$http_host$request_uri;Path=/";# 將當前訪問地址設置爲Cookie
            set $page_401 http://localhost:8000/login.html;# 登陸頁面
            return 302 $page_401;
        }
    }
}

3、API端口代理

假設前端項目端口爲8000,而服務端口則是8001,配置以下↓代理

http {
    # 其餘省略
    server {
        listen       8000; # 監聽端口
        server_name  localhost; # 前端地址
        root   project; # 前端項目文件目錄

        location ^~/api/{
            proxy_pass http://localhost:8001;# 跳轉端口
            proxy_set_header X-real-ip $remote_addr;# 發出請求的IP
            proxy_set_header Host $http_host;
        }
    }
}
相關文章
相關標籤/搜索