Nginx 根據不同的域名來代理轉發內部主機-HTTP和HTTPS

神奇二進位制發表於2022-02-09

一、需求

由於公司只有一個公網,很多 web 專案都想通過 80 或 443 埠來訪問,所以需要 Nginx 充當公司閘道器。

把唯一的公網 IP 80 埠和 443 埠跟 Nginx 閘道器主機 IP 對映,進行 HTTP 和 HTTPS 代理轉發到內部主機中。

配置轉發的域名時,需要提前將域名和公網 IP 進行解析繫結才可以。

image-20220209153956886

二、配置檔案

http://wiki.xxx.net/ 配置

...
   server {
        listen       80;
        server_name  wiki.xxx.net;
	    charset utf-8;
    	access_log  /var/log/nginx/wiki.xxx.net/access.log;

    	location / {
        	try_files /_not_exists_ @backend;
    	}

    	location @backend {
        	proxy_set_header X-Forwarded-For $remote_addr;
        	proxy_set_header Host            $http_host;
        	proxy_set_header X-Forwarded-Proto $scheme;

        	proxy_pass http://192.168.101.69:8181;
    	}
...

https://app.xxx.net/ 配置

...
    server {
        listen 443 ssl;
        server_name  app.xxx.net;
        charset utf-8;

        access_log  /var/log/nginx/app.xxx.net/access.log;
        ssl_certificate ../conf/cert/7174710_app.xxx.net.pem;
        ssl_certificate_key ../conf/cert/7174710_app.xxx.net.key;

        location / {
                try_files /_not_exists_ @backend;
        }

        location @backend {
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header Host            $http_host;
                proxy_set_header X-Forwarded-Proto $scheme;

                proxy_pass https://192.168.101.70;
        }
    }
...

三、訪問測試

訪問:http://wiki.xxx.net/

image-20220209160121542

訪問:https://app.xxx.net/

image-20220209160236957

到此就完成根據域名來代理轉發對應的主機了,後續還有其他系統需要對外提供服務的,通過以上配置微調即可。
如有不恰當的地方,還望大佬們在評論區指教,謝謝!

相關文章