通过Nginx配置多域名访问

通过Nginx配置多域名访问

一、下载Nginx

访问Nginx官网选择对应版本和安装包:http://nginx.org/

以下讲述为在Windows环境下配置Nginx进行多域名访问

二、Nginx常用命令

1. 启动Nginx命令

解压缩Nginx包到指定目录,并打开命令行工具,切换到该目录,通过以下命令启动Nigx

C:\nginx>start nginx

2. 停止Nginx

C:\nginx>nginx.exe -s stop

或者使用命令

C:\nginx>nginx.exe -s quit

注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

3. 重新载入Nginx

C:\nginx>nginx.exe -s reload

当配置信息修改,可使用此命令重新启动Nginx以使配置生效

三、配置Nginx

打开文件:C:\nginx\conf\nginx.conf,配置其中Server块代码

########### 每个指令必须有分号结束。#################
#user administrator administrators;  #配置用户或者组,默认为nobody nobody。
#worker_processes 2;  #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大连接数,默认为512
}
http {
    include       mime.types;   #文件扩展名与文件类型映射表
    default_type  application/octet-stream; #默认文件类型,默认为text/plain
    #access_log off; #取消服务日志    
    log_format myFormat '$remote_addr$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
    access_log log/access.log myFormat;  #combined为日志格式的默认值
    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #热备
    }
    error_page 404 https://www.baidu.com; #错误页
    server {
        keepalive_requests 120; #单连接请求上限次数。
        listen       4545;   #监听端口
        server_name  127.0.0.1;   #监听地址       
        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
           #root path;  #根目录
           #index vv.txt;  #设置默认页
           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表
           deny 127.0.0.1;  #拒绝的ip
           allow 172.18.5.54; #允许的ip           
        } 
    }
} 

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

### 配置 Nginx 服务器以支持通过域名访问并允许其他设备访问 要确保 Nginx 服务器能够通过域名访问,并且允许其他设备也通过该域名访问,需要完成以下几个关键步骤: #### 配置域名访问 1. **配置 DNS 解析** 确保域名已经正确解析到服务器的公网 IP 地址。可以在域名提供商的 DNS 设置中添加 A 记录,将域名指向服务器的公网 IP。例如,若域名为 `example.com`,则添加 `A` 记录,值为服务器的公网 IP。 2. **配置 Nginx 虚拟主机** 编辑 Nginx 的站点配置文件(通常位于 `/etc/nginx/sites-available/default` 或 `/usr/local/nginx/conf/nginx.conf`),添加一个 `server` 块,指定 `server_name` 为你的域名,并配置 SSL(如果需要 HTTPS 访问)。 ```nginx server { listen 80; server_name example.com www.example.com; location / { root /var/www/html; index index.html; try_files $uri $uri/ =404; } } ``` 如果需要 HTTPS 支持,可以配置 SSL 证书路径: ```nginx server { listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; location / { root /var/www/html; index index.html; try_files $uri $uri/ =404; } } ``` 3. **禁止 IP 地址直接访问** 为了确保只能通过域名访问,可以添加一个默认的 `server` 块,监听 80 和 443 端口,并返回 403 或 400 错误,以阻止通过 IP 地址访问。 ```nginx server { listen 80 default_server; listen 443 ssl default_server; server_name _; ssl_certificate /etc/nginx/ssl/default.crt; ssl_certificate_key /etc/nginx/ssl/default.key; return 403; } ``` 这样,当用户通过 IP 地址访问时,Nginx 会返回 403 错误[^5]。 #### 允许其他设备访问 1. **确保服务器防火墙开放端口** 确保服务器的防火墙允许 HTTP(80)和 HTTPS(443)端口的入站连接。例如,在 `ufw` 防火墙中,可以使用以下命令: ```bash sudo ufw allow 80/tcp sudo ufw allow 443/tcp ``` 2. **配置服务器监听地址** 确保 Nginx 的 `listen` 指令监听的是 `0.0.0.0`,而不是 `127.0.0.1`,以允许外部设备访问。 ```nginx listen 80; ``` 3. **测试域名访问** 在其他设备上,打开浏览器并输入域名(如 `http://example.com`),应能正常访问服务器内容。 4. **配置域名重定向(可选)** 如果希望将裸域名重定向到 `www` 子域名,可以在 Nginx 中添加重定向规则: ```nginx server { listen 80; server_name example.com; return 301 http://www.example.com$request_uri; } ``` 这样,访问 `example.com` 时会自动跳转到 `www.example.com` [^1]。 #### 总结 通过上述配置Nginx 可以确保只能通过域名访问,并且其他设备也可以正常访问。关键在于正确配置 DNS 解析、Nginx 虚拟主机、防火墙规则以及监听地址。此外,还可以通过设置默认 `server` 块来阻止 IP 地址直接访问,从而增强安全性[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值