nginx-docker-tcp-http

docker-compose

version: "3"
services:
  nginx:
    image: nginx
    restart: always
    container_name: nginx
    privileged: true
    ports:
      - 8014:8014
      - 在这里是需要暴露的端口
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./log:/var/log/nginx
      - /主配置文件宿主机路径/nginx.conf:/etc/nginx/nginx.conf
      - ./HTTP端口监听文件夹conf.d:/etc/nginx/conf.d
      - ./TCP端口监听文件夹stream.d:/etc/nginx/stream.d
      - ./你得前端web项目地址web:/home/docker/nginx/web
    network_mode: host

主配置文件nginx.conf


user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

# HTTP监听代理
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

# TCP监听代理
stream {

	log_format proxy '$remote_addr [$time_local] '
	'$protocol $status $bytes_sent $bytes_received '
	'$session_time "$upstream_addr" '
	'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
	access_log  /var/log/nginx/stream.log proxy;
	open_log_file_cache off;
	include /etc/nginx/stream.d/*.conf;

}

http端口-放在conf.d目录下的文件,可以放置多个

# operation
map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
}


server {

	listen 8015;
	listen [::]:8015;
	server_name 127.0.0.1:8015;
	

	# html文件地址
	location / {
		root /路径/web/screen;
		index zhihuizhaoming.html;
	}
	
}

server {

	listen 8014;
	listen [::]:8014;
	client_max_body_size 50m;
	server_name 127.0.0.1:8014;
	
	root /你的前端项目放的地方也就是nginx配置的web路劲/dist/;
	
	index index.html index.htm;
	try_files $uri $uri/ /index.html;
	
	location /后端接口路径/ {
	
		proxy_pass http://你得服务IP:端口;
		proxy_set_header Host $host;
           	proxy_set_header  X-Real-IP        $remote_addr;
            	proxy_set_header X-NginX-Proxy true;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection $connection_upgrade;
                # 这里配置单个代理跨域,跨域配置
		add_header 'Access-Control-Allow-Origin' *;	
		add_header 'Access-Control-Allow-Credentials' 'true';
		add_header 'Access-Control-Allow-Methods' *;
		add_header 'Access-Control-Allow-Headers' *;
	
	}
	
          	
}



TCP端口-放在stream.d目录中的文件,可多个

upstream protocol_backend {
        # 可以配置不同的负载均衡算法
        # least_conn; # 最少连接数
        # ip_hash;    # 根据客户端IP进行哈希,保证同一IP总是访问同一台后端

		# weight是权重比,根据服务器情况自己设置
        server 实际的TCP服务1的IP:端口 weight=3 max_fails=3 fail_timeout=30s;
        server 实际的TCP服务2的IP:端口 weight=1 max_fails=3 fail_timeout=30s;
    }

server {

	listen 10000;
	listen [::]:10000;	
	proxy_pass protocol_backend;
	tcp_nodelay on;

	
          	
}


posted @ 2025-08-19 17:13  窃窃私语QAQ  阅读(5)  评论(0)    收藏  举报