Nginx:一个 IP,多个网站,如何配置? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linar
V2EX    NGINX

Nginx:一个 IP,多个网站,如何配置?

  •  
  •   linar 2015-09-16 23:32:27 +08:00 11504 次点击
    这是一个创建于 3748 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个 IP ,多个网站,如何配置?

    ubuntu 14.04 nginx 1.80 php5-fpm

    一个网站的时候正常,在 sites-available 再添加一个配置文件的时候,全部无法访问,请教如何正确配置

    47 条回复    2015-09-17 23:29:55 +08:00
    cxbig
        1
    cxbig  
       2015-09-16 23:34:50 +08:00
    监听同样的端口 :80 和 :443 ,然后 ServerName 不一样的就行,指定不一样的 Directory 路径。
    Daddy
        2
    Daddy  
       2015-09-16 23:35:05 +08:00
    是放 conf 的接,不是 conf
    Scholer
        3
    Scholer  
       2015-09-16 23:35:14 +08:00
    server_name 想加多少加多少
    cxbig
        4
    cxbig  
       2015-09-16 23:37:37 +08:00
    sites-available 是让你准备更多的独立的配置文件
    你要让它们生效,需要连接到 sites-enabled ,然后重启 nginx 服务
    linar
        5
    linar  
    OP
       2015-09-16 23:38:59 +08:00
    @Daddy 麻烦请详细说明,谢谢。

    我想做的是在一个单 IP 服务器上,有 3 个域名,想建 3 个 wordpress 站点。
    Starduster
        6
    Starduster  
       2015-09-1623:39:31 +08:00   1
    在 nginx.conf 里添加不同 Server 区块,或者在 conf.d/下添加独立的文件
    server {
    listen 80;
    server_name aaa;
    root /xxx/aaa/;
    }
    server {
    listen 80;
    server_name bbb;
    root /xxx/bbb/;
    }
    http://nginx.org/en/docs/http/server_names.html
    Daddy
        7
    Daddy  
       2015-09-16 23:45:46 +08:00
    nginx 比搞,不同版本都有变化,/usr/share/nginx 目录有,/etc/nginx 目录也有,都不统一的。我就是不喜欢,统一用一键包,就算只装一个 nginx 也是。
    我记得是需要用 ln 做一下链接的。默认给的也是一个 ln 链接
    loveminds
        8
    loveminds  
       2015-09-16 23:46:31 +08:00
    @Daddy 还有 /usr/local/nginx
    fengdra
        9
    fengdra  
       2015-09-16 23:51:42 +08:00   1
    server {
    listen 80;
    return 403; # 禁止 IP 访问
    }

    server { #第一个网站
    listen 80;

    root ....;
    index ....;

    server_name xxx.com; #域名

    location / {
    ...
    }
    ...
    }

    server { #第二个网站
    listen 80;

    root ....;
    index ....;

    server_name yyy.com;

    location / {
    ...
    }
    ...
    }
    cxbig
        10
    cxbig  
       2015-09-16 23:53:54 +08:00
    LZ 说了有 sites-available ,那么肯定还有个 sites-enabled , link 上就好,分散安排不容易冲突,都写一个文件里太乱
    Daddy
        11
    Daddy  
       2015-09-16 23:57:26 +08:00
    @loveminds 找死人的,我说怎么找不着目录,难道装出问题了?还有呢,一会是 conf.d ,一会是 sites-available , conf.d 是直接放 conf ,而 sites-available 是弄成软链接,我 X
    linar
        12
    linar  
    OP
       2015-09-16 23:58:10 +08:00
    @cxbig 我就是建立了不同的配置文件在 sites-available,然后 ln 到 sites-enabled ,然后,然后就都无法访问了。
    刚开始只添加一网站,可以正常访问,当我再添加一个配置文件到 sites-available ,并且 ln 后,两个网站就都无法访问了。。。
    cxbig
        13
    cxbig  
       2015-09-17 00:00:52 +08:00
    @linar 去 sites-enabled 用 ls -alh 贴结果出来,我看看你的 ln 是不是用对了
    billlee
        14
    billlee  
       2015-09-17 00:03:29 +08:00
    首先看看日志里报了什么错吧
    cxbig
        15
    cxbig  
       2015-09-17 00:04:37 +08:00
    @linar 以下两个语法都可以:
    1. sites-enabled$ sudo ln -s ../sites-available/site1 .
    2. ~$ sudo ln -s /etc/nginx/sites-available/site1 /etc/nginx/sites-enabled/
    如果你确定链接没有问题,请检查每个配置文件的语法是不是有错
    linar
        16
    linar  
    OP
       2015-09-17 00:05:45 +08:00
    @cxbig ln -s /etc/ngixn/sites-available/xxx /etc/nginx/sites-enabled/xxx
    而且一旦我把后来添加的配置文件删除,重启 nginx 后,第一个网站就又恢复正常了
    cxbig
        17
    cxbig  
       2015-09-17 00:07:00 +08:00
    @linar 那就查那个 xxx 配置文件,配合查看 nginx 的 log
    XiaoxiaoPu
        18
    XiaoxiaoPu  
       2015-09-17 00:07:56 +08:00
    @Daddy 其实 Nginx 不搞, Nginx 自身是没有 sites-available 这种东西的,连 conf.d 都没有,只有一个 /etc/nginx/nginx.conf ,这些文件夹都是各个 debian 系, rhel 系发行版打包时自己加上的。
    linar
        19
    linar  
    OP
       2015-09-17 00:11:54 +08:00
    @cxbig
    2015/09/16 23:19:37 [warn] 1902#0: conflicting server name "www.xxx.com" on 0.0.0.0:80, ignored
    2015/09/16 23:19:37 [warn] 1902#0: conflicting server name "xxx.com" on 0.0.0.0:80, ignored
    2015/09/16 23:19:37 [emerg] 1902#0: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
    2015/09/16 23:19:37 [warn] 1905#0: conflicting server name "www.xxx.com" on 0.0.0.0:80, ignored
    2015/09/16 23:19:37 [warn] 1905#0: conflicting server name "xxx.com" on 0.0.0.0:80, ignored
    2015/09/16 23:19:37 [emerg] 1905#0: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
    2015/09/16 23:22:33 [warn] 2098#0: conflicting server name "www.xxx.com" on 0.0.0.0:80, ignored
    2015/09/16 23:22:33 [warn] 2098#0: conflicting server name "xxx.com" on 0.0.0.0:80, ignored
    2015/09/16 23:22:33 [emerg] 2098#0: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
    2015/09/16 23:41:57 [emerg] 3139#0: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
    2015/09/16 23:43:09 [warn] 3287#0: conflicting server name "www.xxx.com" on 0.0.0.0:80, ignored
    2015/09/16 23:43:09 [warn] 3287#0: conflicting server name "xxx.com" on 0.0.0.0:80, ignored
    2015/09/16 23:43:09 [warn] 3287#0: conflicting server name "www.xxx2.com" on 0.0.0.0:80, ignored
    2015/09/16 23:43:09 [warn] 3287#0: conflicting server name "xxx2.com" on 0.0.0.0:80, ignored
    2015/09/16 23:43:09 [emerg] 3287#0: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
    2015/09/16 23:45:50 [warn] 3529#0: conflicting server name "www.xxx.com" on 0.0.0.0:80, ignored
    2015/09/16 23:45:50 [warn] 3529#0: conflicting server name "xxx.com" on 0.0.0.0:80, ignored
    2015/09/16 23:45:50 [warn] 3529#0: conflicting server name "www.xxx2.com" on 0.0.0.0:80, ignored
    2015/09/16 23:45:50 [warn] 3529#0: conflicting server name "xxx2.com" on 0.0.0.0:80, ignored
    2015/09/16 23:45:50 [emerg] 3529#0: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
    Daddy
        20
    Daddy  
       2015-09-17 00:13:18 +08:00
    @XiaoxiaoPu 没研究,只是看着就烦,变来变去的,目录一会是 /etc/nginx ,一会儿又去了 /usr/share/nginx ,还有 /usr/local/nginx ,然后干脆就统一用自己熟悉的一键包安装 nginx ,方便自己。
    cxbig
        21
    cxbig  
       2015-09-17 00:16:07 +08:00
    @linar 把 emerg 那个问题处理掉,去总配置文件下加个这个试试
    http {
    server_names_hash_bucket_size 64;
    ...
    }
    jarlyyn
        22
    jarlyyn  
       2015-09-17 00:16:49 +08:00
    这个都不会的话,千万别用 nginx.

    应为你估计也没法把.htaccess 里的安全配置改成 nginx 的
    msg7086
        23
    msg7086  
       2015-09-17 00:18:11 +08:00
    @Daddy 你需要习惯系统包……
    Daddy
        24
    Daddy  
       2015-09-17 00:44:31 +08:00
    @msg7086 半桶水,不想记太多把自己都搞蒙了,会一个就可以了,其他慢慢学习消化吧。
    就比如这个问题,这个坑踩过,所以第一时间还是能猜到 LZ 是软链接那里弄错了,而不是乱贴 conf
    stanhou
        25
    stanhou  
       2015-09-17 01:05:57 +08:00
    这种最基本的问题应该自己去查手册
    iyaozhen
        26
    iyaozhen  
       2015-09-17 01:28:39 +08:00
    我觉得这个问题默认的 conf 文件里面就有写呀。去掉注释就能运行
    oojiayu
        27
    oojiayu  
       2015-09-17 01:30:28 +08:00 via Smartisan T1
    安装个 AMH 不就完了么,至于那么麻烦?
    jamesliu96
        28
    jamesliu96  
       2015-09-17 01:41:32 +08:00
    在 http {} 里面加 server {}
    icloudnet
        29
    icloudnet  
       2015-09-17 04:52:03 +08:00
    一直是 Apache 死忠,所以也是 centos 死忠,这段时间搞树莓派,用了 Apache2 了,还是不习惯,但是还是不用 nginx ,虽说 nginx 占用内存少点,主要还是再学习成本比 Apache 要高。
    molinxx
        30
    molinxx  
       2015-09-17 05:21:36 +08:00 via iPhone
    AMH 、 LuManager 、 WDCP ,不然来个 LNMP 一键包也行,生产环境最好等自己在测试环境折腾明白了再上。
    ToysMall
        32
    ToysMall  
       2015-09-17 07:39:59 +08:00 via iPhone
    这种水平就来?
    XianZaiZhuCe
        33
    XianZaiZhuCe  
       2015-09-17 08:27:10 +08:00
    这东西百度一下不太难的
    fengyqf
        35
    fengyqf  
       2015-09-17 09:23:57 +08:00
    @msg7086 +86400
    搭车推荐用发行版编译好的包( rpm , deb 等)这些包的目录一致性好,相关文件容易找。
    初学者可能会觉得乱,不像 win 程序,一个软件一个独立目录;一旦熟悉后,你绝对不想“回去”。
    当然,自己编译的话,推荐参考这个规范,只不过放到 /usr/local 里,即 /usr/local/bin, /usr/local/etc, /usr/local/lib, /usr/local/share 等。当然编译前的配置有点麻烦。

    @Daddy
    @loveminds
    flydogs
        36
    flydogs  
       2015-09-17 09:31:35 +08:00
    lnmp 一键安装,
    然后可以用命令添加网站 /域名。
    Admstor
        37
    Admstor  
       2015-09-17 09:37:59 +08:00
    lnmp.org
    还是比较稳定的
    用在生产环境问题也不大
    ljbha007
        38
    ljbha007  
       2015-09-17 09:39:18 +08:00
    @linar
    log 说的很清楚
    你两个域名重名了
    肯定一个是父域名 一个是父域名下的二级子域名
    lightforce
        39
    lightforce  
       2015-09-17 10:29:54 +08:00
    ln -s .../sites-available/xxx .../sites-enabled/
    loveminds
        40
    loveminds  
       2015-09-17 12:35:50 +08:00
    @fengyqf 我认为应该是,/etc/软件名字 /xxx.conf
    fengyqf
        41
    fengyqf  
       2015-09-17 15:42:52 +08:00
    @loveminds 你的意思是:
    手工编译的包,其配置文件应该写到 /etc/软件名字 /xxx.conf
    如果你的配置文件名字正好跟系统包管理的文件名字一致,包管理工具你认为你装过这个包,在做包 update 时,可能给你把这个包安装上。
    我以为遇到过类似情况,自己编译的新版本 php ,然后 yum update 后,我的配置被覆盖了
    aveline
        42
    aveline  
       2015-09-17 15:52:31 +08:00
    @Daddy 不统一是因为不是用系统包装的吧
    ys0290
        43
    ys0290  
       2015-09-17 17:30:56 +08:00 via iPhone
    多看 log
    hippoboy
        44
    hippoboy  
       2015-09-17 17:49:44 +08:00
    楼上好多人说了,server name
    loveminds
        45
    loveminds  
       2015-09-17 18:50:02 +08:00
    @fengyqf 那种情况,旧的配置文件应该会备份为.rpmsave
    fengyqf
        46
    fengyqf  
       2015-09-17 23:26:18 +08:00
    @loveminds 有自动改名备份没错,但手工编译的软件没了,莫名其妙的版本变了。
    为了不给自己找麻烦,所以推荐放到 /usr/local/ 下的子目录,这样不会跟包管理冲突。
    loveminds
        47
    loveminds  
       2015-09-17 23:29:55 +08:00
    @fengyqf 用 ln 指向也可以
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2078 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 01:00 PVG 09:00 LAX 17:00 JFK 20:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86