301在Nginx中重写永久重定向

301在Nginx中重写永久重定向,nginx,ubuntu-10.04,Nginx,Ubuntu 10.04,大家好,仍然在学习linux(运行Ubuntu10.04 lts)和nginx(运行1.4.1)谢谢大家的帮助,我已经找到了一些我想做的事情的例子,但是他们没有足够的解释我的舒适度 我将site1.com及其所有内容移动到了site2.com,需要一个永久的301重定向,因为我在其他网站上有很多链接,无法更改 我找到的最好的教程告诉我这样做: ### redirect beta.cyberciti.biz$URI to www.cyberciti.biz$URI with 301 ### ser

大家好,仍然在学习linux(运行Ubuntu10.04 lts)和nginx(运行1.4.1)谢谢大家的帮助,我已经找到了一些我想做的事情的例子,但是他们没有足够的解释我的舒适度

我将site1.com及其所有内容移动到了site2.com,需要一个永久的301重定向,因为我在其他网站上有很多链接,无法更改

我找到的最好的教程告诉我这样做:

### redirect beta.cyberciti.biz$URI to www.cyberciti.biz$URI with 301 ###
server {
    listen      75.126.153.206:80;
    server_name beta.cyberciti.biz;
    root        /usr/local/nginx/html;
    index       index.html;
    rewrite     ^ $scheme://www.cyberciti.biz$request_uri permanent;
    # ....
}
但是,我不知道是添加整个块来更改变量,还是应该更改已在conf文件中的服务器{…}块。我的conf文件中有两个服务器{…},但它们都被注释掉了(见下文)。。如果他们被注释掉了,不知道他们为什么会在那里

#     server {
#         listen     localhost:110;
#         protocol   pop3;
#         proxy      on;
#     }
#
#     server {
#         listen     localhost:143;
#         protocol   imap;
#         proxy      on;
#     }
当前nginx.conf为:

user www-data;
worker_processes  3;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
worker_connections  1024;
# multi_accept on;
}

http {
include       /etc/nginx/mime.types;

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

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;
tcp_nodelay        on;

gzip  on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

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



# mail {
#     # See sample authentication script at:
#     # http://wiki.nginx.org/NginxImapAuthenticateWithApachePhpScript
# 
#     # auth_http localhost/auth.php;
#     # pop3_capabilities "TOP" "USER";
#     # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#     server {
#         listen     localhost:110;
#         protocol   pop3;
#         proxy      on;
#     }
# 
#     server {
#         listen     localhost:143;
#         protocol   imap;
#         proxy      on;
#     }
# }

我将您告诉我的内容插入到http{}块下方和所有注释块上方。

在nginx中,将服务器名称从site1更改为site2,然后创建一个新的site1块

server {
    listen 80;
    server_name site1.com;
    location / {
        return 301 $scheme://site2.com$request_uri;
    }
}

当我添加以下内容时得到:root@mail~:service nginx restart Restarting nginx:[emerg]:未知指令“server”位于/etc/nginx/nginx.conf:31配置文件/etc/nginx/nginx.conf测试失败我已经移动了所有文件,因此我没有从服务器上删除域区域,但文件和文件夹都不见了。。这可能是问题所在吗?您是否将
服务器
放在另一个
服务器
中?因为这不起作用,你需要在另一个
服务器
块之外创建它,你能粘贴整个
nginx.conf
或者至少是关于这个站点的部分吗?不,我在最后一个http{}块下面插入了它,在所有注释块上面,将我的nginx.conf添加到原始帖子中,谢谢你的帮助!那么
server
块需要在
http
块中,如果您在
http
块的最后一行看到,它会说
include/etc/nginx/sites enabled/*
这意味着您可以在启用的
站点中创建文件
并且它将自动包含在内,您不需要使用
nginx.conf
文件,无论如何,如果您想要快速修复,请移动您在
http
块中添加的
服务器