"你好"
我正在尝试为2个Yii项目配置Nginx,frontend用于用户,admin用于只有一个域的管理员(无子域)。我需要将其配置为使mydomain.com引用frontend,mydomain.com/admin引用admin。问题是我一次只能配置其中一个,这意味着我可以使用frontend或admin,但不能同时使用两者。
- 我所尝试的 *
前端配置
server {
listen 80;
server_name api.maim.experiments.uz;
return 301 https://$server_name$request_uri;
}
server {
charset utf-8;
client_max_body_size 128M;
listen 443 ssl;
ssl_certificate_key privkey.pem;
ssl_certificate fullchain.pem;
ssl_protocols TLSv1.2;
set $host_path "/home/itschool/inha_dev/frontend";
server_name api.maim.experiments.uz;
root $host_path/web;
set $yii_bootstrap "index.php";
access_log /var/log/nginx/itschool-access.log;
error_log /var/log/nginx/itschool-error.log;
location / {
index index.html $yii_bootstrap;
try_files $uri $uri/ /index.php;
}
location ~ ^/(protected|framework|themes/\w+/views) {
deny all;
}
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
location ~ \.php$ {
set $fsn /index.php;
if (-f $document_root$fastcgi_script_name){
set $fsn $fastcgi_script_name;
}
fastcgi_pass 127.0.0.1:9002;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fsn;
}
location ~ /\.(ht|svn|git) {
deny all;
}
location ~* /\. {
deny all;
access_log off;
log_not_found off;
}
}
返回.conf
server {
listen 80;
server_name api.maim.experiments.uz;
return 301 https://$server_name$request_uri;
}
server {
charset utf-8;
client_max_body_size 128M;
listen 443 ssl;
ssl_certificate_key privkey.pem;
ssl_certificate fullchain.pem;
ssl_protocols TLSv1.2;
set $host_path "/home/itschool/inha_dev/backend";
server_name api.maim.experiments.uz;
root $host_path/web;
set $yii_bootstrap "index.php";
access_log /var/log/nginx/itschool-access.log;
error_log /var/log/nginx/itschool-error.log;
location ^~ /admin {
alias /home/itschool/inha_dev/backend/web;
if (!-e $request_filename) { rewrite ^ /admin/index.php last; }
location ~ \.php$ {
if (!-f $request_filename) { return 404; }
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass 127.0.0.1:9002;
}
}
location ~ /\.(ht|svn|git) {
deny all;
}
location ~* /\. {
deny all;
access_log off;
log_not_found off;
}
}
我找到了一些有答案的问题,但它们对我不起作用,请帮助。
3条答案
按热度按时间m2xkgtsf1#
我最近使用了类似配置来支持单个域上的Web应用程序/移动的应用程序和管理面板
我希望这能帮助你。下面是配置
也可以查看Yii 2的官方文档,在单个域(Apache,Nginx). CLICK HERE上设置yii 2-app-advanced
还有一件事,你需要知道的是,如果你想改变backend/web到admin,那么你也必须在Yii 2应用程序中做一些改变。
ar7v8xwq2#
一个域会将所有的请求引导到一个IP(服务器)。Nginx会使用第一个
server
块匹配server_name https://nginx.org/en/docs/http/request_processing.html,所以你需要把所有的配置放在一个文件中,并使用location
来分隔它们。你可以把location ^~ /admin
移到front.conf
位置的开头,并使用根目录;或者,您可以创建一个代理配置文件,其中只包含一小部分内容。使用后一种方式,你应该改变前后配置来监听其他端口。另外,SSL证书是为一个域而不是URL提供的。所以你只能在代理配置中使用它。
edqdpe6u3#
如果您遵循Yii2 Single Domain Apache and Nginx选项1中的一些关键说明,您应该能够完成您想要的任务。
根据参考链接,选项1:
假设Linux操作系统
并设置nginx文件
否:如果上述方法不起作用,请参见以下链接了解选项-2:
Yii2 Single Domain Apache and Nginx