Nginx是如何处理一个请求的呢?如何通过不同于80的端口开启Nginx?

本文详细解释了Nginx启动过程中的端口监听机制,以及如何通过编辑配置文件将监听端口改为非80。还介绍了连接建立、事件处理和关闭的完整流程。

        首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面 先初始化好这个监控的socket,再进行listen 然后再fork出多个子进程出来, 子进程会竞争accept新的连接。 此时,客户端就可以向nginx发起连接了。

        当客户端与nginx进行三次握手,与nginx建立好一个连接后,此时,某一个子进程会accept成功,然后创建nginx对连接的封装,即ngx_connection_t结构体接着,根据事件调用相应的事件处理模块,如http模块与客户端进行数据的交换,最后,nginx或客户端来主动关掉连接,到此,一个连接就寿终正寝了

如何通过不同于80的端口开启Nginx?

        为了通过一个不同的端口开启Nginx,你必须进入/etc/Nginx/sites-enabled/,如果这是默认文件,那么你必须打开名为“default”的文件。编辑文件,并放置在你想要的端口: Like server { listen 81; } 
       

### Nginx 同一端口代理模式:前端与后端的配置 在 Nginx 中,通过反向代理可以实现同一端口指向前端和后端的服务。这通常需要对 `nginx.conf` 文件进行合理的配置,以区分不同路径的请求并将其转发到相应的服务。以下是实现这一功能的具体方法: #### 1. 配置文件结构 Nginx 的配置文件中,可以通过 `location` 指令来定义不同的路径规则,并将这些路径映射到不同的后端服务或静态资源。 ```nginx server { listen 80; server_name example.com; # 前端静态资源路径 location / { root /path/to/frontend/dist; index index.html; try_files $uri /index.html; # Vue Router 模式下的重定向支持 } # 后端 API 路径 location /api/ { proxy_pass http://localhost:3000/; # 假设后端服务运行在 3000 端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` #### 2. 配置说明 - **前端静态资源**:`location /` 指定了根路径的请求会被映射到前端静态资源目录。如果使用的是单页应用(如 Vue),需要确保 `try_files` 指令能够正确处理路由问题[^4]。 - **后端 API 请求**:`location /api/` 将所有以 `/api/` 开头的请求转发到本地的后端服务(如 Node.js 或 Spring Boot)。这里的关键是 `proxy_pass` 指令,它会将请求转发到指定的后端地址[^2]。 #### 3. 示例场景 假设有一个 Vue 前端项目和一个 Node.js 后端服务,分别运行在以下地址: - 前端:`http://example.com` - 后端:`http://localhost:3000/api` 通过上述配置,用户访问 `http://example.com` 时会加载前端页面,而访问 `http://example.com/api/some-endpoint` 时会触发对后端服务的调用。 #### 4. 注意事项 - 确保 Nginx 配置文件无语法错误,可以通过命令 `./nginx -t` 进行测试[^1]。 - 如果前端项目使用了路由模式(如 Vue Router 的 history 模式),需要在 `location /` 中添加 `try_files` 指令以避免路由报错。 - 在生产环境中,建议为 Nginx 配置 HTTPS 支持以增强安全性。 --- ### 相关代码示例 以下是完整的 Nginx 配置文件示例: ```nginx http { server { listen 80; server_name example.com; # 前端静态资源路径 location / { root /var/www/frontend/dist; index index.html; try_files $uri /index.html; } # 后端 API 路径 location /api/ { proxy_pass http://localhost:3000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值