Linux+Nginx服务器下同端口实现多域名配置

1、在Nginx安装目录/etc/nginx/conf.d下,针对需要创建的站点,分别创建不同域名的配置文件,比如:a11.com.conf、b22.com.conf、c33.com.conf

2、配置文件中,会遇到需要解决端口转发问题,其中多端口转发会涉及到服务启停问题。

3、常见方案1:

比如 python项目,你需要依靠启动uwsgi服务,php项目只能依靠定向的本地ip端口。

示例:

nginx 80端口配置 (监听a二级域名)

server {
listen 80;
server_name a11.com;
location / {
proxy_pass http://localhost:8080; # 转发
}
}

nginx 80端口配置 (监听b二级域名)

server {
listen 80;
server_name b22.com;
location / {
proxy_pass http://localhost:8081; # 转发
}
}

该方案会有个缺点,一旦你需要区分的站点较多,你需要新增更多的类似8080端口,端口服务管理对小白太困难。

4、常见方案2:

使用wordpress的配置,现在nginx文件下创建通用的wordpress域名转发配置策略,这个策略对其他程序一样适用。

1)创建通用配置文件,取名:wordpress.conf,并将该文件放在 /etc/nginx 目录下。

location / {
if (-f $request_filename/index.html){
rewrite (.) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}

以上代码表明,wordpress的转发策略是,在相同80端口下,再根据根目录文件名称进行区分和域名转发;

2)继续在/etc/nginx/conf.d文件目录下,创建不同域名的配置文件,模板如下:

a11.com.conf文件配置:

server
{
listen 80;
server_name a11.com;
root /var/www/a11;
index index.html index.htm index.php default.html default.htm default.php;

access_log /var/log/nginx/access.log main;

include wordpress.conf;
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*\.(js|css)?$
{
expires 12h;
}

}

b22.com.conf文件配置:

针对性修改上面绑定域名、文件根目录即可。

c33.com.conf文件配置:

针对性修改上面绑定域名、文件根目录即可。


技术linux,nginx

Posted by Gauin