首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx配置/重写

Nginx配置/重写
EN

Stack Overflow用户
提问于 2016-03-18 07:11:12
回答 1查看 136关注 0票数 0

我想把nginx配置成这样:

好的,如果我浏览到domain.com/,/var/www/index.php文件被称为

怎么做到的?如果我浏览到domain.com/blah,在apache上调用/var/www/Controler.php是由一个重写条件完成的:

代码语言:javascript
复制
RewriteRule (.*) controller.php [L,QSA]

怎么做到的?如果我浏览到domain.com/api/someMethod,在apache上调用/var/www/api/Controler.php是由一个重写条件完成的:

代码语言:javascript
复制
RewriteRule ^api api/controller.php [L,NC]

怎么做到的?如果我浏览到domain.com/image.png,nginx会在apache上显示图像/var/www/image.png,这是通过重写条件完成的:

代码语言:javascript
复制
RewriteRule \.(js|css|gif|png|jpg|ico|txt|woff|woff2)$ - [L,NC]

和我的nginx配置:

代码语言:javascript
复制
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name _;
        root /var/www;
        index index.php;
        ssl_certificate /etc/ssl/certs/server.crt;
        ssl_certificate_key /etc/ssl/private/server.key;

        location ~ {
                try_files $uri $uri/ /index.php;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}
EN

回答 1

Stack Overflow用户

发布于 2016-03-18 17:13:39

配置的重要部分包括:

代码语言:javascript
复制
root /var/www;
index index.php;

location = / { }

location / {
    try_files $uri $uri/ /controller.php;
}

location /api {
    try_files $uri $uri/ /api/controller.php;
}

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

前两行来自您的原始配置。

接下来,location =将确保URI /遵守index index.php而不是try_files规则。

location /定义了默认操作,serving image.png,子目录上的index.php和其他任何目录上的controller.php

location /api修改了与controller.php相关的行为。

location ~ \.php$块实现fastcgi接口。请注意,include fastcgi_params;应该出现在任何fastcgi_param指令之前,以避免后者被悄悄覆盖。

如果希望URI domain.com/blah.php调用controller.php而不是抛出404,则将=404更改为/controller.php

有关nginx指令的列表,请参阅this

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36073311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档