NGINX端口代理不工作

我试图做到这一点,而不是键入“www.example.com:8080”,我只是键入“www.example.com”。 我正在使用NGINX,但我似乎无法得到它的工作。 我在网上发现了许多有用的文章,他们都说要做同样的事情,我已经尝试过,但不起作用。

我在一个Ubuntu的Apache2服务器上运行

在这里我做了什么:

  1. Sudo进入位于/ etc / nginx / site-enabled / default的configuration文件
  2. 听80的地方,把它改为听8080
  3. sudo服务nginx重启

但是,这似乎没有效果。

默认

# You may add here your # server { # listen 80; # server_name graychat.net; # location / { # proxy_pass http://127.0.0.1:8080; # } # } # statements for each of your virtual hosts to this file ## # You should look at the following URL's in order to grasp a solid understanding # of Nginx configuration files in order to fully unleash the power of Nginx. # http://wiki.nginx.org/Pitfalls # http://wiki.nginx.org/QuickStart # http://wiki.nginx.org/Configuration # # Generally, you will want to move this file somewhere, and start with a clean # file but keep this around for reference. Or just disable in sites-enabled. # # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. ## server { listen 8080 default_server; listen [::]:8080 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root /usr/share/nginx/html; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: # fastcgi_pass unix:/var/run/php5-fpm.sock; # fastcgi_index index.php; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # root html; # index index.html index.htm; # # location / { # try_files $uri $uri/ =404; # } #} # HTTPS server # #server { # listen 443; # server_name localhost; # # root html; # index index.html index.htm; # # ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # # ssl_session_timeout 5m; # # ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; # ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; # ssl_prefer_server_ciphers on; # # location / { # try_files $uri $uri/ =404; # } #} 

我已经对上面的默认configuration文件进行了以下编辑,并重新启动,但它似乎仍然不工作

 server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { proxy_pass 127.0.0.1:8080; # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } .... } 

—解决问题—

我的configuration文件没有错。 当我咨询了/var/log/nginx/error.log我看到了错误

 [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 

所以我跑了下面的命令:

 sudo fuser -k 80/tcp service nginx start 

一切正常:)

你有它倒过来。

端口80是默认的HTTP端口,因此inputwww.example.com与inputwww.example.com:80相同

改变你的听指令回listen 80; ,确保你以root身份启动nginx,并且端口在防火墙中没有被阻塞,你应该是好的。

如果您的后端应用程序正在侦听端口8080,您已经想告诉nginx将请求路由到该地址。

 location / { proxy_pass http://127.0.0.1:8080; } 

当端口80发出请求时,nginx将把它发送到端口8080上的应用程序,该端口将把响应返回给nginx – 然后将其返回给从未在任何地方看到端口8080的用户。