找回密码
 立即注册
查看: 591|回复: 0

[linux] Linux中Nginx的HTTP和HTTPS常用配置以及proxy_pass详解

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-6-9 12:42:02 | 显示全部楼层 |阅读模式
本帖最后由 Shaw0xyz 于 2024-6-9 14:08 编辑

1. 简介

Nginx是一款高性能的HTTP和反向代理服务器,广泛用于网站的静态内容服务、反向代理和负载均衡。本文将介绍如何在linux中配置Nginx的HTTP和HTTPS服务,并详细解释proxy_pass的使用方法。

1.1 准备工作

在开始之前,请确保已经在Linux系统上安装了Nginx。如果尚未安装,可以使用以下命令进行安装:

  1. sudo apt update
  2. sudo apt install nginx
复制代码


2. Nginx的HTTP配置

2.1 基本HTTP配置

Nginx的配置文件通常位于/etc/nginx/nginx.conf。以下是一个基本的HTTP配置示例:

  1. server {
  2.     listen 80;
  3.     server_name example.com;

  4.     location / {
  5.         root /var/www/html;
  6.         index index.html index.htm;
  7.     }
  8. }
复制代码


在上述配置中,Nginx监听80端口(HTTP默认端口),并将example.com的请求指向/var/www/html目录。

2.2 配置多个虚拟主机

可以在同一个Nginx配置文件中配置多个虚拟主机,每个虚拟主机有独立的配置:

  1. server {
  2.     listen 80;
  3.     server_name site1.com;

  4.     location / {
  5.         root /var/www/site1;
  6.         index index.html;
  7.     }
  8. }

  9. server {
  10.     listen 80;
  11.     server_name site2.com;

  12.     location / {
  13.         root /var/www/site2;
  14.         index index.html;
  15.     }
  16. }
复制代码


3. Nginx的HTTPS配置

3.1 生成SSL证书

为了启用HTTPS,需要SSL证书。可以使用Let’s Encrypt获取免费的SSL证书,或使用OpenSSL生成自签名证书:

  1. sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
复制代码


3.2 基本HTTPS配置

配置文件中添加HTTPS支持:

  1. server {
  2.     listen 443 ssl;
  3.     server_name example.com;

  4.     ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
  5.     ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

  6.     location / {
  7.         root /var/www/html;
  8.         index index.html;
  9.     }
  10. }
复制代码


3.3 强制HTTP重定向到HTTPS

为了确保所有HTTP请求都重定向到HTTPS,可以添加以下配置:

  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     return 301 https://$host$request_uri;
  5. }
复制代码


4. proxy_pass详解

proxy_pass指令用于反向代理,将客户端的请求转发到其他服务器。

4.1 基本proxy_pass配置

以下是一个简单的反向代理示例:

  1. server {
  2.     listen 80;
  3.     server_name example.com;

  4.     location / {
  5.         proxy_pass http://backend_server;
  6.         proxy_set_header Host $host;
  7.         proxy_set_header X-Real-IP $remote_addr;
  8.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  9.         proxy_set_header X-Forwarded-Proto $scheme;
  10.     }
  11. }
复制代码


在上述配置中,Nginx将所有请求转发到http://backend_server,并设置了一些头信息以便于后端服务器识别客户端信息。

4.2 负载均衡

Nginx还可以用于负载均衡,将请求分发到多个后端服务器:

  1. upstream backend {
  2.     server backend1.example.com;
  3.     server backend2.example.com;
  4. }

  5. server {
  6.     listen 80;
  7.     server_name example.com;

  8.     location / {
  9.         proxy_pass http://backend;
  10.         proxy_set_header Host $host;
  11.         proxy_set_header X-Real-IP $remote_addr;
  12.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  13.         proxy_set_header X-Forwarded-Proto $scheme;
  14.     }
  15. }
复制代码


在上述配置中,请求将被轮询方式分发到backend1.example.com和backend2.example.com。

4.3 使用路径和正则表达式

可以基于路径或正则表达式进行代理:

  1. server {
  2.     listen 80;
  3.     server_name example.com;

  4.     location /app1/ {
  5.         proxy_pass http://backend1;
  6.     }

  7.     location /app2/ {
  8.         proxy_pass http://backend2;
  9.     }
  10. }
复制代码


5. 结论

本文介绍了如何在Linux中配置Nginx的HTTP和HTTPS服务,并详细讲解了proxy_pass的使用方法。通过这些配置,可以实现高效的Web服务和反向代理,提高网站的性能和安全性。希望本文能帮助你更好地理解和使用Nginx,实现更复杂和高效的服务器配置。



/ 荔枝学姐de课后专栏 /

Hi!这里是荔枝学姐~

欢迎来到我的课后专栏

自然语言学渣 NLP摆烂姐

热衷于技术写作 IT边角料

AIGC & Coding & Linux ...

~互撩~ TG: @Shaw_0xyz
荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-5 02:29 , Processed in 0.062149 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表