NGINX监听多个端口
要实现NGINX监听多个端口,需要修改其配置文件。默认情况下,NGINX监听80端口(HTTP协议)和443端口(HTTPS协议),故只需要在配置文件中增加相应的监听端口即可。 NGINX提供了两种配置方式,一种是在同一个server块中直接定义多个监听端口,另一种是通过多个server块实现监听不同端口。以下是两种方式的示例。
1. 在同一server块中监听多个端口
http {
server {
listen 80;
listen 8080;
listen [::]:80;
listen [::]:8080;
server_name example.com;
root /var/www;
index index.html;
}
}
上述代码通过在同一个server块中定义了监听80和8080端口(同时支持IPv4和IPv6协议),并指定了服务器名称、网站根目录和默认首页。这样配置后,用户可以通过访问"http://example.com"或"http://example.com:8080"来访问该网站。若想监听更多端口,只需添加listen指令即可
2. 在多个server块中监听不同端口
http {
server {
listen 80;
server_name example.com;
root /var/www;
index index.html;
}
server {
listen 8080;
server_name example.com;
root /var/www2;
index index2.html;
}
}
上述代码通过在不同的server块中定义了监听80和8080端口,同时配置了不同的网站根目录和默认首页。这样配置后,用户可以通过访问"http://example.com"或"http://example.com:8080"来访问不同的网站。
二、高级配置 {#title-2}
1. 使用域名别名
当一个域名被多次重复使用且需要提供不同服务时,可以使用域名别名来避免重复配置。以下是示例代码。
http {
server {
listen 80;
server_name example.com www.example.com;
root /var/www;
index index.html;
}
server {
listen 8080;
server_name test.example.com;
root /var/www2;
index index2.html;
}
}
上述代码通过在不同的server块中使用相同的"server_name"参数,以提供同一域名的不同服务。
2. 使用SSL加密
在某些情况下,为了保证访问安全性,需要使用SSL加密。以下是示例代码。
http {
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/cert.key;
#其他SSL配置
}
}
上述代码演示了如何使用SSL加密来保护访问。当用户访问"http://example.com"时,会被重定向到HTTPS协议上的443端口,从而进行加密访问。需要注意的是,此配置需要使用相应的SSL证书和密钥。
3. 使用IP限制
为了增强服务器的安全性,可以通过IP限制来控制访问。以下是示例代码。
http {
server {
listen 80;
server_name example.com;
deny 192.168.1.1;
allow all;
root /var/www;
index index.html;
}
}
上述代码演示了如何通过deny和allow参数来控制IP访问。在上述示例中,192.168.1.1被屏蔽,其他IP地址可以正常访问。