0
点赞
收藏
分享

微信扫一扫

nginx配置基于域名转发到内网IP不同端口

Nginx可以支持不同的域名映射到同一个公网IP,并且根据域名将请求转发到内部主机不同的端口。这通常被称为"虚拟主机"或"多站点"配置。

以下是一个基本的Nginx虚拟主机配置示例:如下是配置http。

server {
    listen 80;#公网接入端口,这里使用默认80
    server_name example.com; #example.com 填写被访问外网域名
    location / {    #默认是可以访问根目录也就是所有,这里可以设置别名,配合如下配置。
        proxy_pass http://localhost:8080; #内部主机IP及端口,域名后面可以加具体网站路径来显示访问权限
    }
}

####示范访问权限限制
location /test {   
        proxy_pass http://localhost:8080/log
    }
#表示用户只能访问http://localhost:8080/test 网站路径下权限,test是log别名

server {
    listen 80;
    server_name blog.example.com;
    location / {
        proxy_pass http://localhost:8081;
    }
}

在这个例子中,我们定义了两个Nginx虚拟主机:example.comblog.example.com。第一个虚拟主机将请求转发到本地端口8080,第二个虚拟主机将请求转发到本地端口8081。

要使此配置生效,您需要将Nginx配置文件保存为/etc/nginx/sites-available/example.com/etc/nginx/sites-available/blog.example.com,然后将这些文件符号链接到/etc/nginx/sites-enabled目录中。两文件也可以合并放在一起再使用ln -s命令链接。

另外,请确保在DNS服务商处将域名解析到Nginx服务器的公网IP地址。

加证书配置方法:

如果使用SSL证书,可以如下配置:我们为两个域名分别创建了一个server块,并使用server_name指令指定了不同的域名。然后,我们使用proxy_pass指令将请求转发到不同的端口。请注意,我们使用了listen指令来指定Nginx监听的端口。

如果您需要为这些域名添加SSL证书,您需要在Nginx配置中添加以下内容:

server {
    listen 443 ssl;  #表示使用443,加证书
    listen [::]:443 ssl; #这里可以忽略,表示ipv6可以访问
    server_name domain1.com; #外网接入域名

    ssl_certificate /path/to/certificate; #域名证书证书文件PEM路径
    ssl_certificate_key /path/to/private_key;#域名证书key路径

    location / {
        proxy_pass http://localhost:8080;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name domain2.com;

    ssl_certificate /path/to/certificate;
    ssl_certificate_key /path/to/private_key;

    location / {
        proxy_pass http://localhost:8081;
    }
}

在这个例子中,我们添加了ssl参数来指定Nginx监听的HTTPS端口。然后,我们使用ssl_certificatessl_certificate_key指令来指定SSL证书和私钥的路径。

请注意,这只是一个示例配置文件,您需要根据实际情况进行相应的修改。同时,为了确保SSL证书的安全性,您需要选择可信的证书颁发机构来获取证书,并将证书和私钥存储在安全的位置。


举报

相关推荐

0 条评论