Nginx Tomcat http 强制跳转https ssl crt key

本文详细介绍了Nginx服务器的配置方法,包括事件处理模型、HTTP模块配置、静态资源缓存策略、PHP处理规则及HTTPS配置等内容。通过本文,读者可以了解到如何优化Nginx性能并实现负载均衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

user  www www;
worker_processes auto;
error_log  /home/wwwlogs/nginx_error.log  crit;
pid        /usr/local/nginx/logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }
http
    {
        include       mime.types;
        default_type  application/octet-stream;
        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;
        sendfile on;
        tcp_nopush     on;
        keepalive_timeout 60;
        tcp_nodelay on;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.0;
        gzip_comp_level 2;
        gzip_types       text/plain application/x-javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied        expired no-cache no-store private auth;
        gzip_disable        "MSIE [1-6]\.";
        server_tokens off;
        log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" $http_x_forwarded_for';


server
    {
            listen       80;
            server_name 192.168.1.150;
            index index.html index.htm index.php default.html default.htm default.php;
            root        /home/wwwroot/default;
location /logs {
 alias ../logs;
 #Nginx日志目录
 
 autoindex on;
 #打开目录浏览功能
 
 autoindex_exact_size off;
 #默认为on,显示出文件的确切大小,单位是bytes
 #显示出文件的大概大小,单位是kB或者MB或者GB
 
 autoindex_localtime on;
 #默认为off,显示的文件时间为GMT时间。
 #改为on后,显示的文件时间为文件的服务器时间
 
 add_header Cache-Control no-store;
 #让浏览器不保存临时文件
}


location /status {
   stub_status on;
   access_log /usr/local/nginx/logs/status.log;    #日志
   auth_basic "NginxStatus";            
}


            location ~ \.php($|/) {
                fastcgi_pass   unix:/tmp/php-cgi.sock;
                fastcgi_index  index.php;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                fastcgi_param   PATH_INFO $fastcgi_path_info;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }


            location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
                    {
                            expires      30d;
                    }


            location ~ .*\.(js|css)?$
                    {
                            expires      12h;
                    }
            if (!-e $request_filename) {
                rewrite ^/(.*)$ /index.php/$1 last;
                break;
            }
    }


upstream httpsTest{
ip_hash;
server 172.16.16.48:8010;
}
server{
listen 8900;
server_name  172.16.14.26;
server_name_in_redirect off;
location / {
proxy_pass http://httpsTest;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# client_max_body_size 1024m;
proxy_set_header Host $http_host;
}
}




  upstream qixin_http{


        ip_hash;
        server 172.16.14.26:8800;
      #server 172.16.16.47:80;
server 172.16.14.26:9900;
server 172.16.14.26:7700;
    }




upstream tomcat_https {
   server 172.16.14.26:7443 fail_timeout=0;
   server 172.16.14.26:8443 fail_timeout=0;
   server 172.16.14.26:9443 fail_timeout=0;
}


# HTTPS server
server {
    listen       443 ssl;
    server_name  172.16.14.26;
   #server_name  tomcat_https;
ssl on;
    ssl_certificate      /usr/local/nginx/conf/bonc.buruohuainian.cn.bundle.crt;
    ssl_certificate_key  /usr/local/nginx/conf/bonc.buruohuainian.cn.key;


    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;


    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;


    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;  
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
        proxy_redirect off;
        proxy_connect_timeout      240;
        proxy_send_timeout         240;
        proxy_read_timeout         240;
        # note, there is not SSL here! plain HTTP is used
        proxy_pass https://tomcat_https;
    }
}




    server {
        listen       8010;
        server_name  qixin_http;
# rewrite ^(.*)$ https://$host:443 permanent;   
        return 301 https://$host:2611$request_uri;
        server_name_in_redirect off;
        #location / {
        #    root   html;
        #    index  index.html index.htm;
        #}
location /logs {
 alias ../logs;
 #Nginx日志目录


 autoindex on;
 #打开目录浏览功能


 autoindex_exact_size off;
 #默认为on,显示出文件的确切大小,单位是bytes
 #显示出文件的大概大小,单位是kB或者MB或者GB


 autoindex_localtime on;
 #默认为off,显示的文件时间为GMT时间。
 #改为on后,显示的文件时间为文件的服务器时间


 add_header Cache-Control no-store;
 #让浏览器不保存临时文件
}
location /status {
   stub_status on;
   access_log /usr/local/nginx/logs/status.log;    #日志
   auth_basic "NginxStatus";            
}


        location / {
            proxy_pass http://qixin_http;   #来自jsp请求交给tomcat处理
            proxy_redirect off;
            proxy_set_header Host $http_host;    #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 10m;   #允许客户端请求的最大单文件字节数
            client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
            proxy_connect_timeout 90;   #nginx跟后端服务器连接超时时间(代理连接超时)
            proxy_read_timeout 90;      #连接成功后,后端服务器响应时间(代理接收超时)
            proxy_buffer_size 4k;       #设置代理服务器(nginx)保存用户头信息的缓冲区大小
            proxy_buffers 6 32k;        #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
            proxy_busy_buffers_size 64k;#高负荷下缓冲大小(proxy_buffers*2)
            proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

### 如何配置 NginxHTTPS 请求转发到本地 HTTP 服务 为了实现将 HTTPS 请求通过 Nginx 转发至本地运行的 HTTP 服务,需要完成以下几个方面的配置: #### 1. 启用 SSL/TLS 支持并设置证书 Nginx 需要加载 SSL/TLS 证书来处理 HTTPS 流量。以下是基本的 SSL 配置示例: ```nginx server { listen 443 ssl; server_name example.com; # 加载SSL证书和私钥 ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; # 提高安全性的一些可选配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; } ``` 此部分配置用于启用 HTTPS,并指定服务器使用的 SSL 证书路径以及密钥位置[^2]。 --- #### 2. 定义 Location 块匹配请求路径 Location 块定义了如何匹配客户端请求的具体 URL 路径模式。可以使用正则表达式或者前缀匹配的方式。例如: - 使用 `location` 匹配 `/api/` 下的所有请求并将它们反向代理到本地的服务端口上。 ```nginx location /api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Connection ""; } ``` 上述代码片段展示了如何将 `/api/` 开头的请求转发给监听在 `127.0.0.1:8080` 的本地服务[^3]。 对于其他特定路径(如 `/user`, `/order`),也可以按照类似的逻辑进行扩展。 --- #### 3. 处理重定向场景 如果某些路径需要执行跳转操作,则可以通过 `return` 或者 `rewrite` 实现。例如,当访问 `/product` 时直接返回 Tomcat 应用程序主页链接: ```nginx location ~* /product { return 301 http://example.com/product/index.jsp; } ``` 此处利用了 `return` 指令完成了简单的页面重定向功能。 --- #### 4. 综合完整的 Server 配置实例 下面提供了一个综合性的例子,展示如何在一个虚拟主机下同时支持多个子目录的不同后端服务: ```nginx server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location /api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Connection ""; } location /files/ { alias /var/www/files/; } location /redirect-me { return 301 https://another-domain.com/target-page; } } ``` 以上完整配置涵盖了从 HTTPS 到内部 HTTP 微服务之间的桥接过程[^1]。 --- ### 注意事项 - **性能优化**:考虑开启缓存机制减少重复计算开销;调整 worker_processes 和 keepalive_timeout 参数提升并发能力。 - **日志记录**:合理规划 access_log 和 error_log 文件存储位置以便后续排查问题方便快捷。 - **安全加固**:除了基础加密外还需防范常见攻击手段比如 XSS, CSRF 等漏洞风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值