我想在我的服务器上提供两个php站点和一个静态站点。最后,我希望能够在此nginx配置中添加更多静态,php或代理网站。
目前,我尝试提供服务
domain1.com
(php,WordPress)sub.domain1.com
(php,phpMyAdmin)domain2.com
(静态,纯HTML)然而对任何域的所有请求总是最终服务于domain1.com 。我已经实施了SSL,希望消除错误提供的网站,但是现在他们已经变成了重定向到https://domain1.com
。
我还试图实现一个全局删除连接(return 444
)在不正确的域上,但这正是它在包上所说的:它只是开始发送空响应sub.domain1.com
和domain2.com
。不确定我的预期是诚实的。
此外,我已尝试将root
指令移至位置块,如domain1.com
的配置中所示,但这也无济于事。
此外,我尝试将域放在listen 80;
指令中,例如listen domain2.com:80
希望使nginx更喜欢这个块而不是domain1.com
块。我从Nginx Request Processing Documentation得到了灵感。但是,也没有运气。
我不会称自己为最熟练的nginx用户,但是在托管多个域的不同服务器上,这些域提供来自gunicorn服务器的代理内容,这绝不是问题。因此,我怀疑php相关的配置部分是造成这个问题的原因。
指南我以前设置的vanilla服务器是this DigitalOcean guide。但是,我实际使用的服务器是Amazon EC2 t2.micro实例,在安全组中打开了所有必需的端口。我也在使用Ubuntu 14.04 LTS。 Nginx以root身份运行,工作进程以www-data身份运行。所有权限都设置为domain1.com
,而且没有问题。所有域都指向EC2实例的IP地址。
感谢您的帮助!
这是我对每个域的nginx配置。
domain1.com
server {
listen 80;
server_name domain1.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name domain1.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
index index.php index.html index.htm;
client_max_body_size 64M;
location / {
root /usr/share/nginx/html/domain1.com/public;
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root /usr/share/nginx/html/domain1.com/public;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
sub.domain1.com
server {
listen 80;
server_name sub.domain1.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name sub.domain1.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/sub.domain1.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/sub.domain1.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
index index.php index.html index.htm;
server_name sub.domain1.com;
client_max_body_size 64M;
location / {
try_files $uri $uri/ =404;
root /var/www/sub.domain1.com;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
domain2.com
server {
listen 80;
server_name domain2.com www.domain2.com;
root /var/www/domain2.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}