Nginx可以支持不同的域名映射到同一个公网IP,并且根据域名将请求转发到内部主机不同的端口。这通常被称为"虚拟主机"或"多站点"配置。
以下是一个基本的Nginx虚拟主机配置示例:如下是配置http。
server {
listen 80;#公网接入端口,这里使用默认80
server_name ; # 填写被访问外网域名
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.;
location / {
proxy_pass http://localhost:8081;
}
}
在这个例子中,我们定义了两个Nginx虚拟主机:和
blog.
。第一个虚拟主机将请求转发到本地端口8080,第二个虚拟主机将请求转发到本地端口8081。
要使此配置生效,您需要将Nginx配置文件保存为/etc/nginx/sites-available/
和/etc/nginx/sites-available/blog.
,然后将这些文件符号链接到/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 ; #外网接入域名
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 ;
ssl_certificate /path/to/certificate;
ssl_certificate_key /path/to/private_key;
location / {
proxy_pass http://localhost:8081;
}
}
在这个例子中,我们添加了ssl
参数来指定Nginx监听的HTTPS端口。然后,我们使用ssl_certificate
和ssl_certificate_key
指令来指定SSL证书和私钥的路径。
请注意,这只是一个示例配置文件,您需要根据实际情况进行相应的修改。同时,为了确保SSL证书的安全性,您需要选择可信的证书颁发机构来获取证书,并将证书和私钥存储在安全的位置。