Apache2 Nginx配置多域名

3,076 views

继续上一篇关于安装LNMP的问题总结。写一下关于Apache2 Nginx配置多域名的内容。

两个web服务器同时运行。一个Apache2是9000端口,另一个Nginx是80端口。php是由Apache解析的。所以其实是分别配置Apache2和Nginx的多个域名即可。就是说Nginx的80端口域名(如domain.com)和Apache2的9000(如domain.com:9000)能同时指向一个相同的页面就成功了。按照Apache和Nginx的分别配置即可,当然前提是Nginx能正确转发到Apache的端口。

1.Nginx配置域名

Nginx的配置文件位置(根据不同的安装位置而定):/etc/nginx/nginx.conf

按理应该将内容写入nginx.conf,但是看了一下两行

 include /etc/nginx/conf.d/*.conf;
 include /etc/nginx/sites-enabled/*;

就知道网址配置文件的内容其实是可以单独作为一个文件使用的。/etc/nginx/sites-enabled/是放置域名配置文件的,默认文件为default,Nginx会加载/etc/nginx/sites-enabled/目录的所有文件。

所以在/etc/nginx/sites-enabled/目录下新建一个example.conf

内容如下:

server {
listen 80;
root /var/www/example;
server_name www.example.com;
index index.htm index.html;

location / {
root /var/www/example;
try_files $uri/index.html $uri.html $uri.php /index.php$uri?$args $uri @app;
}

location ~* ^.+\.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mp3|flv|mpeg|avi)$ {
try_files $uri @app;
}

location @app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}

location ~ \.php {
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME /var/www/example/$fastcgi_script_name;
 fastcgi_param HTTPS off;
 }
}

如果配置多个域名,则新建不同的配置文件,后缀不限,修改不同的域名和目录即可。

重启Nginx

/etc/init.d/nginx restart

如果能通过域名如www.example.com能访问服务器/var/www/example里面的静态文件,说明Nginx配置域名成功。不过目前还不能正常访问php的动态页面,还需要配置Apache2。

2.Apache2配置文件

Apache2的配置文件位置(根据不同的安装位置而定):/etc/apache2/apache2.conf

同样,你会看到apache2.conf里有一行(如果没有就添加上去)

IncludeOptional sites-enabled/*.conf

就是说Apache2会加载/etc/apache2/sites-enabled/里以.conf为后缀的所有文件
新建一个host.conf的文件添加以下内容

 <VirtualHost *:9000>
 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/example
 ServerName www.example.com
 ErrorLog /var/www/example/error_log
 TransferLog /var/www/example/access_log
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
 </VirtualHost>
<VirtualHost *:9000>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/example2
ServerName www.example2.com
ErrorLog /var/www/example2/error_log
TransferLog /var/www/example2/access_log
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

根据域名数量和指向的目录不同而添加不同的VirtualHost标签。

重启Apache2

/etc/init.d/apache2 restart

如果能通过域名+端口如www.example.com:9000能访问服务器/var/www/example里面的php或其他静态文件,说明Apache配置域名成功。这样输入www.example.com也能正常访问动态的php文件,Apache+Nginx的多域名配置成功。

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>