nginx如何配置多个域名访问

在使用lnmp一键安装包安装环境的时候,配置好了nginx,访问域名时却发现报了404错误,用静态文件缉检查路径是对的,说明php的解析有问题。在网上找到的nginx配置也是无法使用,因此,在此简单总结一下。

1.首先找到自己的nginx.conf在哪里

whereis nginx.conf 该命令可以用来查找文件位置

2.然后进入该目录打开nginx.conf查看一下:

简单查看一下几个比较重要的参数

1.user 代表用户

2.error_log 错误日志输出位置

3.access_log 普通日志输出位置,可以在该文件查看各种请求的情况

4.event,http,server是几个大模块,分别处理不同的配置

5.server里面的

root 是指该配置的网站根目录

server_name 是配置的域名,对应的域名会解析到对应的root

listen 80是指监听80端口,配置ssl证书就需要加个listen 443用来区分不同的协议(http/https)

6.location可以用来处理不同的文件类型配置

7.include vhost/*.conf

这个算是这里比较重要的了,include是用来引入文件的,这里使用了通配符*,表示引入了当前目录的vhost文件夹中所有后缀为.conf的文件,这些文件也是用来搞多级域名配置的。

 

配置多个域名:

1.cd vhost

2.vi blog.mclink.xyz.conf (名字虽然可以随意,最好是对应域名,好找)

3.填入以下配置(改几个地方就能通用):

server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80; ## listen for ipv4
    #listen [::]:80 default_server ipv6only=on; ## listen for ipv6

    server_name blog.mclink.xyz;
    root        /data/blog/public/;
    index       index.php;

    access_log  /data/blog/log/access.log;
    error_log   /data/blog/log/error.log;

    location / {
        # Redirect everything that isn't a real file to index.php
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # uncomment to avoid processing of calls to non-existing static files by Yii
    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    #    try_files $uri =404;
    #}
    #error_page 404 /404.html;

    # deny accessing php files for the /assets directory
    location ~ ^/assets/.*\.php$ {
        deny all;
    }

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

    location ~* /\. {
        deny all;
    }
}

来,我们来简单解释一下把。

其中的

server_name blog.baidu.com; 用于编写你的域名

root /data/blog/public/ 该域名指向的项目根路径

access_log /data/blog/log/access.log; 正常接收输出日志

error_log /data/blog/log/error.log; 报错输出日志

这些是比较重要的部分,大多数都是只要改这些就行,但是有些地方需要提供rewrite功能,还得加上这个:

location / {
        # Redirect everything that isn't a real file to index.php
        try_files $uri $uri/ /index.php$is_args$args;
        #下面是第二种写法
        #rewrite ^/(.*)$ /index.php/$1 last;
    }

有的人会觉得奇怪,怎么跟我的不大一样嘞,因此这个是有两种写法的。

rewrite 和 try_files,那么这两种有啥子区别:

Nginx一般都是配合php-fpm来使用的,

如果使用rewrite的时候会把所有的文件都重定向然后发送给php-fpm,也包括静态文件,这种会造成无意义的开销,因此还是建议使用try_files (Yii框架就是用的这个配置)

 

然后是这个配置:

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

其中fastcgi_params的$document_root是你在sever里面写的root 目录,像SCRIPT_FILENAME这种变量则是在fastcgi_params所定义的,类似于define,因此要先include fastcgi_params才可使用,这些带$符号的则是协议赋值的变量。

 

而fastcgi_pass 则是nginx和php-fpm的通信方式,一般有两种:

 

(来自网上大佬的回答)

一种是TCP,一种是UNIX Domain Socket.

其中TCP是IP加端口,可以跨服务器

.而UNIX Domain Socket不经过网络,只能用于Nginx跟PHP-FPM都在同一服务器的场景.

用哪种取决于你的PHP-FPM配置:

方式1:

php-fpm.conf: listen = 127.0.0.1:9000

nginx.conf: fastcgi_pass 127.0.0.1:9000;

方式2:

php-fpm.conf: listen = /tmp/php-fpm.sock

nginx.conf: fastcgi_pass unix:/tmp/php-fpm.sock;

其中php-fpm.sock是一个文件,由php-fpm生成,类型是srw-rw----.

 

UNIX Domain Socket可用于两个没有亲缘关系的进程,是目前广泛使用的IPC机制,

比如X Window服务器和GUI程序之间就是通过UNIX Domain Socket通讯的.

这种通信方式是发生在系统内核里而不会在网络里传播.

UNIX Domain Socket和长连接都能避免频繁创建TCP短连接而导致TIME_WAIT连接过多的问题.对于进程间通讯的两个程序,

UNIX Domain Socket的流程不会走到TCP那层,直接以文件形式,以stream socket通讯.

如果是TCP Socket,则需要走到IP层,对于非同一台服务器上,TCP Socket走的就更多了.

UNIX Domain Socket:

Nginx <=> socket <=> PHP-FPM

 

TCP Socket(本地回环):

Nginx <=> socket <=> TCP/IP <=> socket <=> PHP-FPM

 

TCP Socket(Nginx和PHP-FPM位于不同服务器):

Nginx <=> socket <=> TCP/IP <=> 物理层 <=> 路由器 <=> 物理层 <=> TCP/IP <=> socket <=> PHP-FPM

 

像mysql命令行客户端连接mysqld服务也类似有这两种方式:

使用Unix Socket连接(默认):

mysql -uroot -p --protocol=socket --socket=/tmp/mysql.sock

使用TCP连接:

mysql -uroot -p --protocol=tcp --host=127.0.0.1 --port=3306

 

之所以我那个报404,原因之一就是fastcgi_param写错了,还有fpm启动的端口不是默认的9000

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Nginx配置多个域名,您可以按照以下步骤进行操作: 1. 打开Nginx配置文件 /etc/nginx/nginx.conf。 2. 在http块中添加多个server块,每个server块用来配置一个域名。 3. 在每个server块中,使用listen指令指定监听的端口和域名。 4. 在每个server块的location块中,使用proxy_pass指令将请求转发到相应的本地端口。 以下是一个示例配置,假设您要配置两个域名 domain1.com和 domain2.com: ``` http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 配置 domain1.com server { listen 80; server_name domain1.com www.domain1.com; location / { proxy_pass http://localhost:8001; } } # 配置 domain2.com server { listen 80; server_name domain2.com; location / { proxy_pass http://localhost:8002; } } } ``` 请注意,以上配置中的localhost:8001和localhost:8002是示例本地端口,您需要根据实际情况修改为相应的端口。 另外,在域名服务器上还需要将不同的域名解析到Nginx服务器的IP地址上,这可以通过修改域名解析配置或在本地进行hosts文件配置来实现。 希望以上信息对您有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [nginx配置多个服务域名](https://blog.csdn.net/qq_42892856/article/details/130821302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [nginx如何配置多个域名访问](https://blog.csdn.net/qq_38378384/article/details/92839567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MClink

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值